HtmlUnit - Welcome to HtmlUnit
Features
- Support for the HTTP and HTTPS protocols
- Support for cookies
- Ability to specify whether failing responses from the server should throw exceptions or should be returned as pages of the appropriate type (based on content type)
- Support for submit methods POST and GET (as well as HEAD, DELETE, ...)
- Ability to customize the request headers being sent to the server
- Support for HTML responses
- Wrapper for HTML pages that provides easy access to all information contained inside them
- Support for submitting forms
- Support for clicking links
- Support for walking the DOM model of the HTML document
- Proxy server support
- Support for basic and NTLM authentication
- Excellent JavaScript support (see the JavaScript section below)
JavaScript Support
HtmlUnit provides excellent JavaScript support, simulating the behavior of the configured browser (Firefox or Internet Explorer). It uses the Rhino JavaScript engine for the core language (plus workarounds for some Rhino bugs) and provides the implementation for the objects specific to execution in a browser.
The unit tests of some well-known JavaScript libraries are included in HtmlUnit's own unit tests; based on these unit tests, the following libraries are known to work well with HtmlUnit:
- jQuery 1.2.6: Full support (see unit test here)
- MochiKit 1.4.1: Full support (see unit tests here)
- GWT 2.5.0: Full support (see unit test here)
- Sarissa 0.9.9.3: Full support (see unit test here)
- MooTools 1.2.1: Full support (see unit test here)
- Prototype 1.6.0: Very good support (see unit test here)
- Ext JS 2.2: Very good support (see unit test here)
- Dojo 1.0.2: Good support (see unit test here)
- YUI 2.3.0: Good support (see unit test here)
To disable JavaScript processing for one WebClient, call WebClient.setJavaScriptEnabled(false).
JavaScript code is executed just like in normal browsers when the page loads or when an handler is triggered. Additionally HtmlUnit provides the ability to inject code into an existing page via HtmlPage.executeJavascript(String yourJsCode).