Selenium is a tool used to create automatic testing of web applications. This tool consists of several components (Selenium IDE, Selenium RC, Selenium WebDriver, Selenium Grid) that complement each other. It has been developed in Java programming language and can be used to test different programming languages, including C#, Groovy, Java, Perl, PHP, Python, Ruby or Scala.
Tests can be run on most modern browsers. Selenium can be deployed on Windows, Linux and MacOS platforms. Selenium is an open-source software and it is released under Apache 2.0 licence, so web developers can download and use it without having to pay.
Originally, Selenium was developed by Jason Huggins in 2004 as an internal tool at ThoughtWorks. Subsequently, others joined the development and they started work on Selenium Remote Control, i.e. RC. Gradually, the project began to branch and it came to its present form.
Selenium consists of several components, each with its specific role in developing automated tests for web applications.
Selenium IDE is a complete integrated development environment for tests. This is an add-on to Firefox browser and has recently been added to Chrome Store. It enables recording, editing and repairing tests in Selenese language. It originally existed under the name Selenium Recorder. Using IDE, scripts can be automatically uploaded and manually edited with the support of automatic add-ons and the ability to move parts quickly.
As an alternative to writing tests in Selenese, it is possible to write tests in different conventional programming languages. These tests then communicate with Selenium using method calling at Selenium API Client. Currently, Selenium API is available for Java, C#, Ruby, JavaScript and Python. With the new Selenium version a new variant of client API has been introduced, but the original API is still supported.
Selenium WebDriver is the successor of Selenium RC. It accepts commands sent in Selenese or via the client API and sends them to the browser. This is implemented through drivers designed for specific browsers that send commands to the browser and subsequently get results.
Selenium Remote Control is a server written in Java. It receives browser commands through http. The RC allows writing of automatized tests for web applications in any programming language which allows easier integration of Selenium into existing frameworks for unit tests. Drivers are available for these programming languages: PHP, Python, Ruby, .NET, Perl and Java.
Selenium Grid is a server allowing test to use browser instances that run on remote machines. One server then works like a hub. Tests contact the hub to gain access to instances of Web browsers. Hub has a list of servers that make browser instances available and allows test to use these instances. At the same time, it allows tests to run in parallel on multiple machines while centrally managing different versions of browsers and their configurations.
This allows to share a burden between different machines and to launch tests running on different platforms or operating systems.