There is a separate web driver for each browser that accepts the selenium commands and drives the browser under the tests. So, let us understand the Selenium Webdriver chapter in detail.
What is WebDriver?
WebDriver is an interface and a pure object-oriented tool. It is a web automation framework that was designed by Simon Stewart while he was working at ThoughtWorks. It is used to execute tests in different popular browsers such as Firefox, Chrome, IE, etc. It contains several types of abstract methods like get(), findElement(), By(), etc.
WebDriver is a set of APIs (Application Programming Interface) that provides a lot of capabilities to Selenium tool. It provides a communication facility between languages and browsers.
What is Selenium WebDriver?
In 2009, Selenium RC is merged with another testing framework called WebDriver to create a new Selenium tool known as Selenium 2.0 or Selenium WebDriver. It was released in July 2011. It is the first choice of any tester to automate web applications.
Selenium WebDriver Architecture
Selenium WebDriver Architecture consists of four basic components. There are as follows:
1. Selenium Language Bindings.
2. JSON Wire Protocol
3. Browser Drivers
4. Real Browsers.
The following picture shows the architectural representation of Selenium WebDriver.
Details of each component:
1. Selenium Language Binding/Selenium Client Libraries
Selenium tests can be written in multiple programming languages such as Java, Ruby, Python, etc. Therefore, Selenium Developers have decided to develop a language bindings or Selenium Client Libraries that allow selenium to support multiple languages such as Java, Ruby, Python, etc.
Selenium Client Libraries is nothing but different kinds of Jar files. These client libraries contain Selenium WebDriver classes and methods that are needed to create automation test scripts and can be installed using package installers available with the respective languages.
For instance, suppose you want to use browser driver in Java, you will use the Java client libraries or Java jar files. All the supported Selenium client libraries can be downloaded from the official website (https://www.seleniumhq.org/download/#client-drivers) of selenium.
Selenium Client Libraries is not a testing framework. A selenium client library provides an application programming interface(API) i.e. a set of functions that executes the selenium commands from the program.
2. JSON
JSON stands for JavaScript Object Notation. It is a very popular data interchange format based on the subset of JavaScript Programming Language which was developed by Douglas Crockford.
It is used to exchange the data between the client and server on the web. It supports data format available in all popular languages like Java, C#, Python, Ruby, etc.
JSON Wire Protocol is a transport mechanism created by WebDriver developers which transfers the data between a server and a client on the web. It uses a REST API to transfer the information between HTTP server. Each browser driver such as FirefoxDriver, ChromeDriver, IEDriver, etc has its own HTTP server.
3. Browser Drivers
Selenium uses a specific driver for each browser to establish secure communication with the respective browser without revealing the internal logic of browser’s functionality.
This browser driver receives the requests from the language binding and invokes the relevant operations on the browser. Each type of browser has its own driver that implements WebDriver’s wire protocol for that specific browser.
4. Real and Headless Browser
Selenium Web driver supports both real and headless browser. For example, If you want to automate tests with selenium web driver and execute the script in the real browser like Chrome, you have to download its specific driver application.
This must be done for all browsers that you want to use. GeckoDriver (Firefox), ChromeDriver, and IE Driver are the example of the most frequently used driver and follow the guidelines of the Selenium framework.
The example of the headless browser is HTMLUnit browser(HTMLUnitDriver). Now let’s see how Selenium WebDriver works internally?
How Selenium WebDriver works internally?
In realtime scenario, when you write code in your Eclipse IDE using any one of the supported Selenium client libraries (say Java), you will click Run option to execute the program source code.
After clicking the Run, Firefox browser will be launched and it will navigate to the URL of the website. Now let’s understand what is happening internally after clicking the Run till the launch of Firefox browser.
When you execute any test script using the web driver, the following steps are performed internally.
1. As you click on Run, The selenium client library run selenium commands from your own program and convert them into the JSON format (as shown below) and sends to the browser driver (say FirefoxDriver) for each command
https://localhost:7705/ {“url”: “https://www.scientecheasy.com”}in a serialized JSON format using JSON Wire Protocol over the HTTP. Each browser driver uses the HTTP server to receive an HTTP request.
2. JSON Wire Protocol communicates between the client and the server by transferring the data. The browser driver receives the HTTP request through HTTP Server. The HTTP Server performs all the specific actions or instructions on the real browser and then the browser will send a request to load URL.
3. After performing all instructions, Execution status is sent back to HTTP Server over the HTTP. The browser driver again uses the HTTP server to receive the HTTP request and send back to the client library via JSON Wire Protocol. The client library passes it back to your program. The program will report as a success or failure.
Features of Selenium WebDriver
There are so many important features of Selenium WebDriver. They are as follows:
WebDriver driver=new FirefoxDriver(); (Firefox browser)
WebDriver driver=new ChromeDriver(); (Chrome Browser)
WebDriver driver=new InternetExplorerDriver(); (Internet Explorer Browser)
5. Drivers, Methods, and Classes: Selenium web driver offers multiple solutions to handle some potential challenges in automation testing. It also helps the testers in the easy way to handle with the complex type of web elements such as check boxes, drop downs, and alerts with the help of dynamic finders.
6. Record & Playback: Web driver does not support record and playback features like Selenium IDE.
7. Dynamic Finder: It also supports dynamic finder for locating the web element on the web pages.
Benefit/Advantage of Selenium WebDriver
Some of the most important advantages of Selenium WebDriver are as follows:
3. It supports parallel test execution that reduces the time taken in executing the parallel test cases.
4. Selenium web driver also supports iPhone and Android operating system.
5. It supports the implementation of Dynamic finder and Listener.
6. Starting up a server in WebDriver is not required before the execution of test scripts.
7. It can be integrated with third-party tools like TestNG and JUnit for grouping the test cases and generating test reports.
8. By using selenium web driver, we can achieve Continuous Testing by integrating with Maven, Jenkins, and Docker.
Limitation/Drawback of Selenium WebDriver
There are some limitations that occur in selenium web driver. They are as follows:
2. It is not possible to perform the testing on the image. We can perform image-based testing by integrating selenium with Sikuli.
3. WebDriver does not generate automatically test result file. We need to integrate with third-party frameworks like TestNG or JUnit for generating test reports.
4. WebDriver cannot support new browsers.
5. Selenium doesn’t support built-in add-ins assistance.
Selenium WebDriver Vs Selenium RC
There was a lot of limitations in Selenium RC which eventually led to the development of Selenium WebDriver. Let’s see how Selenium WebDriver differs from the Selenium RC.
Difference between Selenium WebDriver and Selenium RC
1. The architecture of Selenium WebDriver is simpler as compared to the Selenium RC because it controls the browser directly from the OS (Operating System) level. | 1. Selenium RC’s architecture is more complicated because it uses an intermediate Selenium Remote Control Server to communicate with the browser. |
2. Selenium WebDriver performs faster as compared to the Selenium RC because it interacts directly with the browser without using any external proxy server. | 2. Selnium RC is slower because it uses a JavaScript program called Selenium Core whose commands give the instructions to the browser. |
3. Selenium WebDriver is pure object oriented API. | 3. Selenium RC is semi object oriented API. |
4. It supports both real and headless browser like HTMLUnit browser. | 4. Selenium RC does not support headless browser. It supports only real browser. |
5. WebDriver supports OS(Operating System) for mobile applications such as iOS, Windows mobile, and Android. | 5. Selenium RC does not support testing of mobile apllications. |
6. WebDriver supports Dynamic finder and Listener. | 6. Selenium RC does not support. |
Final words
Hope that this tutorial has covered almost all the important points related to the Selenium WebDriver architecture, features, benefits, and disadvantages. We have tried to understand you all topics in a simple process and an easy way. I hope that you will have understood this tutorial nicely and enjoyed it.
If you like and is a useful tutorial, please share it on social networks to your friends.
Thanks for reading!!!
Next ⇒ Download Selenium WebDriver⇐ PrevNext ⇒
The post Selenium WebDriver Architecture & Benefit appeared first on Scientech Easy.