- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8.6k
HtmlUnitDriver
This is currently the fastest and most lightweight implementation of WebDriver. As the name suggests, this is based on HtmlUnit.
- Fastest implementation of WebDriver
- A pure Java solution and so it is platform independent.
- Supports Javascript
- Emulates other browser's JS behaviour (see below)
None of the popular browsers uses the javascript engine used by HtmlUnit (Rhino). If you test javascript using HtmlUnit the results may differ significantly from those browsers.
When we say "javascript" we actually mean "javascript and the DOM". Although the DOM is defined by the W3C each browser out there has its own quirks and differences in their implementation of the DOM and in how javascript interacts with it. HtmlUnit has an impressively complete implementation of the DOM and has good support for using javascript, but it is no different from any other browser: it has its own quirks and differences from both the W3C standard and the DOM implementations of the major browsers, despite its ability to mimic other browsers.
With WebDriver, we had to make a choice; do we enable HtmlUnit's javascript capabilities and run the risk of teams running into problems that only manifest themselves there, or do we leave javascript disabled, knowing that there are more and more sites that rely on javascript? We took the conservative approach, and by default have disabled support when we use HtmlUnit. With each release of both WebDriver and HtmlUnit, we reassess this decision: we hope to enable javascript by default on the HtmlUnit at some point.
If you can't wait, enabling Javascript support is very easy:
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);
or
HtmlUnitDriver driver = new HtmlUnitDriver(true);
This will cause the HtmlUnitDriver to emulate IE's Javascript handling by default.
Notwithstanding other considerations above, it is possible to get HtmlUnitDriver to emulate a specific browser. You should not really be doing this, as web-applications are better coded to be neutral of which reasonably recent browser you are using. There are two more constructors for HtmlUnitDriver that take allow us to indicate a browser to emulate. One takes a browser version directly:
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3);
The other uses a broader capabilities mechanism:
HtmlUnitDriver driver = new HtmlUnitDriver(capabilities);
This wiki is not where you want to be! Visit the Wiki Home for more useful links
Getting Involved 
Triaging Issues 
Releasing Selenium
Ruby Development 
Python Bindings 
Ruby Bindings 
WebDriverJs
This content is being evaluated for where it belongs
Architectural Overview 
Automation Atoms 
HtmlUnitDriver 
Lift Style API 
LoadableComponent 
Logging 
PageFactory 
RemoteWebDriver 
Xpath In WebDriver
Moved to Official Documentation
Bot Style Tests 
Buck 
Continuous Integration 
Crazy Fun Build 
Design Patterns 
Desired Capabilities 
Developer Tips 
Domain Driven Design 
Firefox Driver 
Firefox Driver Internals 
Focus Stealing On Linux 
Frequently Asked Questions 
Google Summer Of Code 
Grid Platforms 
History 
Internet Explorer Driver 
InternetExplorerDriver Internals 
Next Steps 
PageObjects 
RemoteWebDriverServer 
Roadmap 
Scaling WebDriver 
SeIDE Release Notes 
Selenium Emulation 
Selenium Grid 4 
Selenium Help 
Shipping Selenium 3 
The Team 
TLC Meetings 
Untrusted SSL Certificates 
WebDriver For Mobile Browsers 
Writing New Drivers