Selenium is an open source automation testing tool used to test Web based applications. It runs on most of the browsers and operating systems present and is a highly flexible and user friendly tool. One can develop test scripts in many programming languages (C, C++, Java, Perl, Python, Ruby, .Net, etc.) and run them on different operating systems using selenium.
The Selenium tool is one of the best tools available in the market for testing web applications. The demand for this tool is further fueled by its compatibility to work with multiple browsers and operating systems when compared to other tools in the market. Selenium also offers flexibility in terms of writing t
est scripts. It is not necessary that if the application is developed in one programmi
ng language, the scripts should be written in the same language. It is independent of the language in which the website is
made. For example, if the application under test is developed in Python, it is not required that the scripts be written only in Python,the test scripts can be written in either JAVA or .Net.
Selenium provides support to various languages like C#, Java, Python and Ruby. So the user has the flexibility to choose the language in which he/she is comfortable with. Along with this it simply requires a basic knowledge of a particular language to develop functional test scripts.
Webdriver in selenium is an Interface and it is designed to overcome some limitations of selenium RC software testing tool. However selenium WebDriver's development is in process so still there are few limitations and known issues available in selenium WebDriver. Selenium WebDriver is also known as Selenium 2 and used for web as well mobile applications testing. It is freeware software testing tool and mostly used as a regression testing tool for web and mobile applications.
Selenium WebDriver Divided into 3 major divisions
We have a common API that has a common set of commands and we have various bindings for the different languages. So we can see there’s Java, Python, Ruby, etc..There’s also some other bindings and new bindings can be added very easily.
Now these bindings communicate with Selenium WebDriver API and this API send the commands taken from language level bindings interpret it and sent it to Respective driver. In short term API contains set of common library which allow sending command to respective drivers.
Internet Browser Specific Drivers such as IE, FF, Chrome etc..It works in headless mode which makes, text execution faster. It also contains mobile specific Drivers. The basic idea is each one of these drivers knows how to drive the browser that it corresponds to. For E.g. Chrome Driver knows how to handle the low level details of chrome driver and drive it to do things like clicking the target element, navigating the target page etc...
How it’s working:
You are writing your test in Java using common selenium API and that Java binding is sending commands across this common API. Now on the other end is listening a driver, it interpret those commands and executing them on the actual browser and return result backup using the API.