Born as a ThoughtWorks internal tool, Selenium was originally developed by Jason Huggins in 2004. Its name came as an inside joke that would mock one of their competitors, Mercury. The reason being that mercury poisoning can be cured by ingesting selenium supplements. But what exactly does it do and how can we take advantage of this framework?
Well, simply put, Selenium automates web browsers, but there is definitely more to it. While it is true that this suite of tools is used primarily for automating web apps for a variety of testing purposes, it is definitely not limited to just that. It can also automate the more cyclical (and tedious) web-based administrative tasks, which will ultimately save countless of hours of human interaction, greatly reduce project costs, and optimise the overall application performance and user experience. But first of all, it’s important to understand which of the Selenium tools will be the most appropriate to our needs. Here’s a simple way to look at them:
This is a collection of language-specific bindings intended to guide the web browser more efficiently. It is the successor of the Selenium Remote Control (RC), which is officially deprecated as of this moment. The Selenium Server now also includes built-in grid capabilities and is used by both the Selenium WD and RC versions. If you intend to create more robust, browser-based regression automation testing or would like to scale and distribute scripts across a variety of different environments, then Selenium WebDriver is your tool-to-go.
Previously known as Selenium Recorder, it is now a Mozilla Firefox add-on which will perform simple record-and-playback of browser interactions. It creates quick bug reproduction scripts as well as scripts for automation-aided exploratory testing. Its main feature is that all scripts can be recorded automatically, yet edited manually. All scripts are recorded in Selenese, a testing and scripting language unique for Selenium. By making use of the Selenium Client API, all recording scripts can also be written in other programming languages, such as Java, C#, Ruby, and Python.
A server that will allow your tests to use browsers instances which are running on remote machines. This capability is quite useful when looking to spread out the total amount of testing across several machines, and also for testing on a variety of different platforms or operative systems.
Selenium has several sponsors and commercial partners, which allow all users to run their testing and automation on several browser/OS combinations, all in the cloud. Almost all of these services will offer the ability to capture screenshots and videos of all tests, and also a secure tunnelling which runs behind a firewall protocol, for testing web apps. Relative pricing varies based on the total amount of time per testing per month, as well as the number of concurrent tests allowed.
Arguably their largest partner is SauceLabs. Supporting over 700 different browser/OS combinations, it can store screenshots, videos, logs, and testing metadata. Tunnelling is secured whether by API, automated, or manual setups. SauceLabs also provides mobile support for Android and iOS, for native, hybrid, and mobile web apps.