2 school of Drivers

two groups of driver implementations:

  • Use browser’s native command to driver browser:FirefoxDriver, InternetExplorerDriver, ChromeDriver and OperaDriver invoke the actual browser installed on the machine;
  • Synthetic command to simulate browser behavior: HtmlUnitDriver emulates other browsers JS behavior.
    HtmlUnit is a wrapper around ‘HttpClient’ by Jakarta using java. It provides UI-Less emulation of browsers to test web applications. Its APIs let you do the typical functions performed in an actual web browser, such as click links, fill forms, invoke web pages, submit values etc. HtmlUnit supports java script and complex AJAX libraries. Javascript is disabled in the
    HtmlUnitDriver by default, however if it can be enabled if required.

List of driver servers for different browsers:

Browser Driver Server Maintained By Remarks
HTMLUnit (None) Selenium? WebDriver can drive
HTMLUnit without the need of a driver server
Firefox 47 or older (None) Mozilla WebDriver can drive Firefox without the need of a driver server
Firefox version 48 and newer MarionetteDriver Mozilla
MS Edge EdgeDriver MicroSoft
Internet Explorer Internet Explorer Driver Server MicroSoft Available in 32 and 64bit versions. Use the version that corresponds to the architecture of your IE
Chrome ChromeDriver Google Though its name is just “ChromeDriver”, it is in fact a Driver Server, not just a driver. The current version can support versions higher than Chrome v.21
Opera OperaDriver Opera Though its name is just “OperaDriver”, it is in fact a Driver Server, not just a driver.
PhantomJS(It is no more maintained. Will be replace by chrome headless) GhostDriver Google PhantomJS will be replace by chrome headles.
Safari SafariDriver Safari Though its name is just “SafariDriver”, it is in fact a Driver Server, not just a driver.