{"id":9627,"date":"2022-06-10T10:22:56","date_gmt":"2022-06-10T04:52:56","guid":{"rendered":"https:\/\/www.interviewbit.com\/blog\/?p=9627"},"modified":"2023-02-23T14:55:28","modified_gmt":"2023-02-23T09:25:28","slug":"selenium-architecture","status":"publish","type":"post","link":"https:\/\/www.interviewbit.com\/blog\/selenium-architecture\/","title":{"rendered":"Selenium Architecture &#8211; Detailed Explanation"},"content":{"rendered":"\n<div class=\"gutentoc tocactive ullist\"><div class=\"gutentoc-toc-wrap\"><div class=\"gutentoc-toc-title-wrap\"><div class=\"gutentoc-toc-title\">Table Of Contents<\/div><div id=\"open\" class=\"text_open\">show<\/div><\/div><div id=\"toclist\"><div class=\"gutentoc-toc__list-wrap\"><ul class=\"gutentoc-toc__list\"><li><a href=\"#a-quick-walkthrough-of-selenium\u2019s-memory-lane\">A Quick Walkthrough of Selenium\u2019s Memory Lane!<\/a><\/li><li><a href=\"#what-is-selenium\">What is Selenium?<\/a><\/li><li><a href=\"#what-is-selenium-webdriver\">What is Selenium WebDriver?<\/a><\/li><li><a href=\"#selenium-webdriver-architecture\">Selenium WebDriver Architecture<\/a><\/li><ul class=\"gutentoc-toc__list\"><li><a href=\"#selenium-client-library\">Selenium Client Library<\/a><\/li><li><a href=\"#selenium-api\">Selenium API<\/a><\/li><li><a href=\"#json-wire-protocol\">JSON Wire protocol<\/a><\/li><li><a href=\"#browser-drivers\">Browser Drivers<\/a><\/li><li><a href=\"#browser\">Browser<\/a><\/li><\/ul><li><a href=\"#working-of-selenium-webdriver\">Working of Selenium WebDriver<\/a><\/li><li><a href=\"#advantages-of-selenium-webdriver-architecture\">Advantages of Selenium WebDriver Architecture<\/a><\/li><li><a href=\"#disadvantages-of-selenium-webdriver\">Disadvantages of Selenium WebDriver<\/a><\/li><li><a href=\"#conclusion\">Conclusion<\/a><\/li><li><a href=\"#additional-resources\">Additional Resources<\/a><\/li><\/ul><\/div><\/div><\/div><\/div>\n\n\n\n<p>The goal of automation testing is to minimize the time and effort of testers and generate accurate test results. A tool combined with practical knowledge about the system is used to automate test execution. If you are an automation test engineer, Selenium is one tool that you would have heard about. If you want to know more about Selenium, then you have stumbled upon the right article! This article comprises crisp and concise information about Selenium Architecture, Selenium WebDriver, and its features, advantages, and disadvantages. Without further ado, let\u2019s begin!<\/p>\n\n\n\n<h2 id=\"a-quick-walkthrough-of-selenium\u2019s-memory-lane\"><span id=\"a-quick-walkthrough-of-seleniums-memory-lane\">A Quick Walkthrough of Selenium\u2019s Memory Lane!<\/span><\/h2>\n\n\n\n<p>Selenium was developed in 2004 by Jason Huggins, a Thoughtworks engineer, to address the shortcomings of manual testing. He developed a solution in the form of a program using JavaScript. He initially named it JavaScript TestRunner. Later on, when he realized that the program could do much more, he renamed it Selenium Core and open-sourced it.<br>Next Selenium Remote Control (RC) or better known as Selenium 1 was developed by Paul Hammant, another ThoughtWorks engineer. Selenium RC was developed to solve domain-related issues while testing web applications.<\/p>\n\n\n\n<p>This further escalated to the development of Selenium Grid for parallel testing purposes. Next, Selenium IDE was developed to automate the browser through the record and playback features (similar to UFT\/QTP). In 2008, the Selenium team decided to merge the web driver and Selenium RC into a tool called Selenium 2, which later evolved to Selenium 3 or better known as Selenium WebDriver.<br>Selenium RC is now deprecated and moved to legacy packaging.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img  loading=\"lazy\"  width=\"1024\"  height=\"423\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"Selenium Remote Control\"  class=\"wp-image-9662 pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"(max-width: 1024px) 100vw, 1024px\"  data-pk-src=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-1024x423.png\"  data-pk-srcset=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-1024x423.png 1024w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-300x124.png 300w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-768x317.png 768w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-1536x634.png 1536w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-2048x845.png 2048w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-380x157.png 380w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-550x227.png 550w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-800x330.png 800w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane-1160x479.png 1160w\" ><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img  loading=\"lazy\"  width=\"1024\"  height=\"727\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"Selenium Suite\"  class=\"wp-image-9663 pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"(max-width: 1024px) 100vw, 1024px\"  data-pk-src=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-1024x727.png\"  data-pk-srcset=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-1024x727.png 1024w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-300x213.png 300w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-768x545.png 768w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-1536x1090.png 1536w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-2048x1453.png 2048w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-380x270.png 380w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-550x390.png 550w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-800x568.png 800w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2-1160x823.png 1160w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Seleniums-memory-lane2.png 3079w\" ><\/figure>\n\n\n\n<h2 id=\"what-is-selenium\">What is Selenium?<\/h2>\n\n\n\n<p>Selenium is an open-source framework used to automate the testing of web applications. If you are looking forward to automating functional and regression test cases, then Selenium would be the right choice! Test scripts can be written in Selenium using different programming languages like Java, Python, C#, Ruby, and JavaScript.<br>Quick notes:<br>Selenium is a web automated testing tool that supports cross-browser testing across various operating systems.<br>Selenium supports JAVA, Python, C#, Ruby, and JavaScript.<\/p>\n\n\n\n<h2 id=\"what-is-selenium-webdriver\">What is Selenium WebDriver?<\/h2>\n\n\n\n<p>Selenium WebDriver is currently the most widely used component in the Selenium tool suite. Selenium WebDriver: Selenium 2 integrated with WebDriver API provides an understandable programming interface. JAVA and C# languages are mostly preferred to work with Selenium.<\/p>\n\n\n\n<h2 id=\"selenium-webdriver-architecture\">Selenium WebDriver Architecture<\/h2>\n\n\n\n<p>Selenium WebDriver is currently the most widely used component in the Selenium tool suite. Selenium WebDriver: Selenium 2 integrated with WebDriver API provides an understandable programming interface. JAVA and C# languages are mostly preferred to work with Selenium.<\/p>\n\n\n\n<p>Before diving into Selenium WebDriver architecture, let us look at its components.<br>Selenium 3\u2019s architecture consists of five layers.<\/p>\n\n\n\n<h3 id=\"selenium-client-library\">Selenium Client Library<\/h3>\n\n\n\n<p>Selenium Client Library or language bindings is a programming library that consists of commands in the form of an external jar file that are compatible with Selenium protocol\/W3C Selenium protocol. The selenium client library can be divided into two groups:<\/p>\n\n\n\n<p><strong>Web Driver protocol clients <\/strong>&#8211; They are thin wrappers around WebDriver protocol HTTP calls. Based on the user\u2019s preferred programming language, the library can be downloaded from Selenium\u2019s official repository. The library can later be added while creating a new project or a new Maven project in Eclipse or IntelliJ.<\/p>\n\n\n\n<p><strong>WebDriver-based tools<\/strong> &#8211; These are higher-level libraries that allow us to work with WebDriver automation. Testing frameworks like Selenide, webdriver.io, or AI-powered Selenium extensions like Healenium come under this group. These tools rely on lower-level webdriver protocols to function efficiently.<\/p>\n\n\n\n<h3 id=\"selenium-api\">Selenium API<\/h3>\n\n\n\n<p>Selenium API is a set of rules and regulations that the programs use to communicate with each other. APIs work as an interface between the program and aid in their interaction without any user knowledge.<\/p>\n\n\n\n<h3 id=\"json-wire-protocol\">JSON Wire protocol<\/h3>\n\n\n\n<p>JSON is used in web services in REST and is a widely accepted method for communication between heterogeneous systems. The Selenium WebDriver uses JSON to communicate between client libraries and drivers. The JSON requests sent by the client are converted into HTTP requests for the server\u2019s understanding and again converted back to JSON format while sending it to the client again. This data transfer process is serialization. By this method, the internal logic of the browser is not revealed, and the server can communicate with the client libraries, even if it is not aware of any programming language.<\/p>\n\n\n\n<h3 id=\"browser-drivers\">Browser Drivers<\/h3>\n\n\n\n<p>Browser drivers act as a bridge between the Selenium libraries and the browsers. They help to run Selenium commands on the browser. Each of the browsers has separate drivers, which can be downloaded from Selenium\u2019s official repository. While using a browser driver, we need to import the respective Selenium package \u201corg.openqa.selenium.[$browsername$];\u201d in our code. We should also set the System property of the executable file of the browser driver using the following syntax:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"monokai\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">System.setProperty(key,value)<\/pre>\n\n\n\n<p>Where key is the driver\u2019s name and value is the path to the executable file of the driver in the user\u2019s device.<br>Let us understand this better with this code snippet:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"monokai\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Package InterviewBitBlog;\nimport.org.openqa.selenium.chrome.ChromeDriver;\nPublic class IBContent{\n@Test\nPublic void browser(){\nSystem.setProperty(\"webdriver.chrome.driver\", \"C:\\\\downloads\\\\chromedriver.exe\")\nChromeDriver driver=new ChromeDriver<\/pre>\n\n\n\n<p>When we execute this code, the chrome browser will be opened by Selenium.<\/p>\n\n\n\n<h3 id=\"browser\">Browser<\/h3>\n\n\n\n<p>All the browsers supported by Selenium come under this category. Selenium test scripts can be run across various browsers like Chrome, Safari, Firefox, Opera, and Internet Explorer and operating systems like Windows, Mac OS, Linux, and Solaris.<br>Quick notes:<br>Selenium architecture comprises 5 components; Selenium Client Library, Selenium API, JSON Wire Protocol, Browser Drivers, and Browsers.<br>Selenium Client library &#8211; Selenium commands in the desired programming language in compliance with the W3C Selenium protocol.<br>Selenium API &#8211; Facilitates software to software interaction.<br>JSON Wire Protocol &#8211; Communication method between client libraries and drivers.<br>Browser drivers &#8211; Support interaction between Selenium library and web browser.<\/p>\n\n\n\n<h2 id=\"working-of-selenium-webdriver\">Working of Selenium WebDriver<\/h2>\n\n\n\n<p>Imagine the working of Selenium WebDriver like a conversation between you, a foreign tourist, and your friend. The tourist is asking for directions, but you are new in the city. You know the tourist\u2019s language, but your friend knows the directions in and out. So, you ask the tourist what they want in their language, and translate it for your friend. Your friend tells you the directions in a jiffy, and you quickly explain it to the tourist in their language. Sounds simple right? Now let us relate this scenario with the components in our Selenium Architecture!<br>Here\u2019s an example script for login written in Selenium JAVA (Element values used are for illustration purposes).<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"monokai\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Package InterviewBitBlog;\nimport.org.openqa.selenium.chrome.ChromeDriver;\nimport org.openqa.selenium.By; \nimport org.openqa.selenium.WebDriver; \nimport org.openqa.selenium.WebElement; \nimport org.testng.Assert;\nPublic class IBContent{\n@BeforeTest\nPublic void login(){\nSystem.setProperty(\"webdriver.chrome.driver\", \"C:\\\\downloads\\\\chromedriver.exe\")\nChromeDriver driver=new ChromeDriver\n\n@Test \n  public void loginAutomationTest() { \n  driver.get(\"www.samplelogin.com\"); \n  Assert.assertEquals(driver.getTitle(),\"Home\"); \n   \n  WebElement signInLink = driver.findElement(By.linkText(\"signin\")); \n  signInLink.click(); \n  WebElement user = driver.findElement(By.id(\"username\")); \n  user.sendKeys(\"test\"); \n  WebElement pass = driver.findElement(By.id(\"password\")); \n  pass.sendKeys(\"test\"); \n  WebElement log = driver.findElement(By.name(\"Login\")); \n  log.click(); <\/pre>\n\n\n\n<p>Once you have written your selenium script in the IDE, let us say, Eclipse, for now, you will hit the run button to execute the program. Based on the above program, the Chrome browser will be launched and it will navigate to \u201cwww.samplelogin.com\u201d. The Selenium library communicates with the Selenium API, which in turn sends the programming language commands to the browser driver via the JSON wired protocol. The commands are sent in the form of JSON requests, where the protocol converts them to HTTPS requests. The browser driver will then use this HTTP server to get the request and send it to the server, where it filters out the commands that need to be executed. In this case, the driver identifies the sign-in link and performs a click operation on it. Later it identifies the username and password fields and inputs the given values and finally clicks on the \u201clogin\u201d button. This is the execution part which is done on the browser\u2019s UI. Finally, the HTTP server sends the response back to the test script, where the drivers and APIs convert it to JSON format and thus the results are recorded.<\/p>\n\n\n\n<p>Here, the Selenium client library is your friend who knows the directions, the test script is the tourist and the webdriver is you. You interacted with the tourist with your multilingual skills (umm, let&#8217;s say this is the Selenium API) and successfully executed the script, that is, our tourist got their directions and reached their destination! Sounds good, doesn\u2019t it?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img  loading=\"lazy\"  width=\"1024\"  height=\"413\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"Webdriver Architecture\"  class=\"wp-image-9664 pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"(max-width: 1024px) 100vw, 1024px\"  data-pk-src=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-1024x413.png\"  data-pk-srcset=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-1024x413.png 1024w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-300x121.png 300w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-768x309.png 768w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-1536x619.png 1536w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-2048x825.png 2048w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-380x153.png 380w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-550x222.png 550w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-800x322.png 800w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Working-of-Selenium-WebDriver-1160x467.png 1160w\" ><\/figure>\n\n\n\n<h2 id=\"advantages-of-selenium-webdriver-architecture\">Advantages of Selenium WebDriver Architecture<\/h2>\n\n\n\n<ul><li>It is open-source, supports many languages, and is compatible with many operating systems.<\/li><li>Selenium WebDriver architecture is designed to support cross-browser testing and parallel testing.<\/li><li>Selenium WebDriver supports integration with various frameworks like Maven, and ANT for code compilation.<\/li><li>It also supports integration with testing frameworks like TestNG to improve automation testing and reporting.<\/li><li>Selenium can be integrated with Jenkins for CI\/CD purposes.<\/li><li>Selenium has strong community support which makes troubleshooting pretty easy.<\/li><li>Selenium Architecture enables us to implement user gestures like the mouse cursor and keyboard actions like click, double click, drag, and drop, click and hold, etc.<\/li><li>With Selenium, you can write your test scripts in the language with which the web application was coded, thus speeding up test cycles.<\/li><li>Selenium does not require us to start any server before testing and provides a direct interpretation of code onto the web services.<\/li><li>The architecture of Selenium enables us to simulate advanced browser interactions like clicking the browser&#8217;s back and front buttons.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img  loading=\"lazy\"  width=\"1024\"  height=\"615\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"Selenium WebDriver Features\"  class=\"wp-image-9665 pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"(max-width: 1024px) 100vw, 1024px\"  data-pk-src=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-1024x615.png\"  data-pk-srcset=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-1024x615.png 1024w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-300x180.png 300w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-768x462.png 768w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-1536x923.png 1536w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-2048x1231.png 2048w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-380x228.png 380w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-550x331.png 550w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-800x481.png 800w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Advantages-of-Selenium-WebDriver-1160x697.png 1160w\" ><\/figure>\n\n\n\n<h2 id=\"disadvantages-of-selenium-webdriver\">Disadvantages of Selenium WebDriver<\/h2>\n\n\n\n<ul><li>Selenium does not support testing of Windows applications as it works only on web applications.<\/li><li>Selenium depends on third-party frameworks like TestNG and Cucumber for reporting, as it does not have inbuilt reporting features.<\/li><li>Selenium architecture is not prepared to handle dynamic web elements accurately, thus affecting test results.<\/li><li>Selenium does not handle frames and pop-ups efficiently.<\/li><li>Selenium does not automate captcha, barcodes, and test cases that involve fingerprints.<\/li><li>Selenium does not support the automation of video and audio elements.<\/li><li>Selenium requires knowledge of programming languages, thus making test script authoring slightly hard.<\/li><li>Test management tasks cannot be performed with Selenium, while tools like UFT\/QTP support ALM integration.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img  loading=\"lazy\"  width=\"1024\"  height=\"299\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"Limitations of Selenium\"  class=\"wp-image-9666 pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"(max-width: 1024px) 100vw, 1024px\"  data-pk-src=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-1024x299.png\"  data-pk-srcset=\"https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-1024x299.png 1024w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-300x88.png 300w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-768x224.png 768w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-1536x448.png 1536w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-2048x598.png 2048w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-380x111.png 380w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-550x160.png 550w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-800x233.png 800w, https:\/\/www.interviewbit.com\/blog\/wp-content\/uploads\/2022\/06\/Disadvantages-of-Selenium-WebDriver-1160x338.png 1160w\" ><\/figure>\n\n\n\n<h2 id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p>I hope this article gave you a fair idea of Selenium Architecture. If you are preparing for interviews based on Selenium, then check out our <a href=\"https:\/\/www.interviewbit.com\/selenium-interview-questions\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Selenium Interview questions<\/strong><\/a> compilation. Visit <a href=\"https:\/\/www.interviewbit.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>InterviewBit<\/strong><\/a> for more resources and training programs to help you crack those tough interviews in your dream companies!<\/p>\n\n\n\n<h2 id=\"additional-resources\">Additional Resources<\/h2>\n\n\n\n<ul><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.interviewbit.com\/blog\/selenium-frameworks\/\" target=\"_blank\">Selenium Frameworks<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.interviewbit.com\/software-testing-mcq\/\" target=\"_blank\">Software Testing MCQ<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.interviewbit.com\/blog\/testing-tools\/\" target=\"_blank\">Testing Tools<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.interviewbit.com\/blog\/automation-testing-tools\/\" target=\"_blank\">Automation Testing Tools<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.interviewbit.com\/automation-testing-interview-questions\/\" target=\"_blank\">Automation Testing Interview Questions<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.interviewbit.com\/blog\/qa-engineer\/\" target=\"_blank\">How To Become A QA Engineer?<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"The goal of automation testing is to minimize the time and effort of testers and generate accurate test&hellip;\n","protected":false},"author":4,"featured_media":9748,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_daextam_enable_autolinks":"1","csco_singular_sidebar":"","csco_page_header_type":"","csco_appearance_grid":"","csco_page_load_nextpost":"","csco_post_video_location":[],"csco_post_video_location_hash":"","csco_post_video_url":"","csco_post_video_bg_start_time":0,"csco_post_video_bg_end_time":0},"categories":[1420],"tags":[1500,1499],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/posts\/9627"}],"collection":[{"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/comments?post=9627"}],"version-history":[{"count":27,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/posts\/9627\/revisions"}],"predecessor-version":[{"id":16566,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/posts\/9627\/revisions\/16566"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/media\/9748"}],"wp:attachment":[{"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/media?parent=9627"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/categories?post=9627"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.interviewbit.com\/blog\/wp-json\/wp\/v2\/tags?post=9627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}