Details about the Architecture of Selenium Webdriver
Test automation has gained wide acceptance and many tools have been introduced for automating test procedures. Whenever you are using a test automation tool you should be well aware of the working of the tool and its architecture. In this article, we will discuss the architecture of Selenium Webdriver.
Basically the Selenium webdriver architecture has been divided into three parts and they are Language level bindings, Selenium webdriver API and Drivers. Now let us deal with them one by one in detail.
Language Level Bindings
The language level bindings are the bindings with which the Selenium webdriver code can be implemented. In other words, these languages, which make a framework, interact with the selenium webdriver and work on different browsers and devices. Thus, we have a common API for Selenium that has a common set of commands and we will have different bindings for different languages. There will be Java, C#, Python, Ruby and some other bindings. A new binding can be created and added easily.
Selenium Webdriver API
The language level bindings will communicate with Selenium webdriver API. API, in turn receives commands from language level bindings, interpret it and send it to the respective drivers. Actually, Selenium Webdriver API contains a common set of library which allows sending commands to the respective drivers.
Here, we have different internet browser specific drivers such as IE driver, Firefoxdriver, Chromedriver etc. We also have drivers such as HTML units which work on headless mode making the testing faster. It has mobile specific drivers too. Each driver knows clearly how to draw the corresponding browser.
Now, let us see how the test proceeding go on. You are writing a test script, say in Java and the java string sends the commands to the Selenium webdriver API. This Webdriver API interprets it and sends the command to the browser through the driver and testing will happen at the browser level. After this the result will be sent back to the code using webdriver API.