Selenium WebDriver Architecture

 

Being a part of the overall component system, we deduce that the Selenium WebDriver is not a standalone testing tool.  It comprises various components that are required to run tests. These are the architectural components of Selenium.

So first let’s take a look at this image below

This image tells us about the core selenium webdriver architecture and the major selenium components which comprise WebDriver.

  • Selenium WebDriver Client Libraries / Language Bindings – Software Testers want to select languages that they are comfortable with. Since WebDriver Architecture supports different languages, so there are bindings available for a range of languages like Java, C#, Python, Ruby, PHP, etc. Anyone who has a basic knowledge of working with any programming language can get specific language bindings and can start off. This is how Selenium Achitecture provides flexibility to testers to do automation in their comfort zone.
  • JSON WIRE PROTOCOL – As per the Selenium Architecture above, the JSON Wire Protocol facilitates all the communication that is happening in Selenium between the browser and the code. This is the heart of Selenium. JSON Wire Protocol provides a medium for data transfer using a RESTful (Representational State Transfer)  API which provides a transport mechanism and defines a RESTful web service using  JSON over HTTP.
  • Browser Drivers – Since there are various browsers that are supported by Selenium, each browser has its own implementation of the W3C standard that Selenium provides. As such browser-specific binaries are available that are specific to the browser and hides the implementation logic from the end-user. JSONWire protocol establishes a connection between the browser binaries and the client libraries.
  • Browsers – Selenium will be only able to run tests on the browsers if they are locally installed, either on the local machine or on the server machines. So browser installation is necessary.

How Selenium WebDriver works?

In the section above, we saw the architecture of Selenium. Now let’s see how behind the scenes all the communication happens?  Take a look at the image below – this shows a view of how the actual workflow looks like.

When a user writes a WebDriver code in Selenium and executes it, the following actions happen in the background –

  • An HTTP request generates, and it goes to the respective browser driver (Chrome, IE, Firefox). There is an individual request for each Selenium command.
  • The browser driver receives the request through an HTTP server.
  • The HTTP server decides which actions/instructions need to execute on the browser.
  • The browser executes the instructions/steps as decided above.
  • The HTTP server then receives the execution status and then sends back the status to an automation script, which then shows the result ( as passed or an exception or error).

Browsers supported by the Selenium