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.

Components

Selenium consists of several components, each with its specific role in developing automated tests for web applications.

Selenium IDE

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.

Selenium API client

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

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

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

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.

The advantages of using Selenium

  • Acquisition costs. There are no direct costs linked to the introduction of Selenium.
  • Support for different browsers. Tests can be run on multiple browsers.
  • Support for different programming languages. Selenium has its own programming language Selenese, but tests can be written in C#, Java, JavaScript, PHP, Python or in other languages.
  • Different methods of testing. Selenium scripts can be uploaded from a web browser, create them manually or combine both possibilities.
  • Connection with other tools. Selenium doesn’t relate to a specific reporter tool or other aspects of the test framework. It is integrated with different popular tools, such as Hudson, SauceLabs or Qmetry.

The disadvantages of using Selenium

  • It isn’t a complex solution. For a fully-effective automation, you need third-party frameworks and other tools.
  • It requires the knowledge of programming. Unlike some other commercial tools it requires test team members to have an extensive technical knowledge.
  • Absence of test management. Selenium doesn’t contain any test management tools, test scripts are stored as simple files without attributes. Organizing individual scripts requires using external tools.
  • Difficult editing of native scripts. Scripts written in Selenese aren’t too intuitive, so they are relatively difficult to edit.
  • Parallel processing. Tests cannot be started in parallel using a single machine.