Skip to content

HtmlUnit/htmlunit

Repository files navigation

HtmlUnit Logo

Version 4.13.0 / June 03, 2025

❤️ Sponsor

Maven Central OpenSSF Scorecard

Homepage

htmlunit.org

News

Developer Blog

HtmlUnit@mastodon | HtmlUnit@bsky | HtmlUnit@Twitter

Table of Contents

Overview

HtmlUnit is a "GUI-less browser for Java programs". It models HTML documents and provides an API that allows you to invoke pages, fill out forms, click links, etc... just like you do in your "normal" browser.

It has fairly good JavaScript support (which is constantly improving) and is able to work even with quite complex AJAX libraries, simulating Chrome, Firefox or Internet Explorer depending on the configuration used.

HtmlUnit is typically used for testing purposes or to retrieve information from web sites.

Get it!

Maven

Add to your pom.xml:

<dependency>
    <groupId>org.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>4.13.0</version>
</dependency>

Gradle

Add to your build.gradle:

implementation group: 'org.htmlunit', name: 'htmlunit', version: '4.13.0'

Getting Started

You can start here:

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

Selenium Integration

HtmlUnit can be used as a Selenium WebDriver-compatible browser through the htmlunit-driver. This integration allows you to use HtmlUnit as a headless browser option within Selenium test suites, providing fast execution without the overhead of launching a full browser instance.

Please have a look at the HtmlUnit Remote project if you like to use this driver from Selenium 4 Grid.

jsoup Bridge

The htmlunit-jsoup library provides utilities to bridge the gap between HtmlUnit and jsoup. The HtmlUnitDOMToJsoupConverter enables seamless integration between HtmlUnit's comprehensive browser simulation capabilities and all the jsoup-based libraries, allowing you to leverage the full ecosystem of jsoup tools while maintaining HtmlUnit's JavaScript execution and dynamic content handling.

Built on HtmlUnit

HtmlUnit is used as the underlying "browser" by different Open Source tools like

HtmlUnit is used by many projects for automated web testing

Vulnerabilities

List of Vulnerabilities

Security Policy

Sponsoring

Constantly updating and maintaining the HtmlUnit code base already takes a lot of time.

I would like to make 2 major extensions in the next few months

For doing this I need your sponsoring.

Contributing

Pull Requests and all other Community Contributions are essential for open source software. Every contribution - from bug reports to feature requests, typos to full new features - are greatly appreciated.

Please try to keep your pull requests small (don't bundle unrelated changes) and try to include test cases.

Last CI build

The latest builds are available from our Jenkins CI build server

Build Status

Read on if you want to try the latest bleeding-edge snapshot.

Maven

Add the snapshot repository and dependency to your pom.xml:

    <!-- ... -->
    <repository>
        <name>Central Portal Snapshots</name>
        <id>central-portal-snapshots</id>
        <url>https://central.sonatype.com/repository/maven-snapshots/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>

    <!-- ... -->
    <dependencies>
      <dependency>
          <groupId>org.htmlunit</groupId>
          <artifactId>htmlunit</artifactId>
          <version>4.14.0-SNAPSHOT</version>
      </dependency>
      <!-- ... -->
    </dependencies>

    <!-- ... -->

Gradle

Add the snapshot repository and dependency to your build.gradle:

repositories {
  maven { url "https://central.sonatype.com/repository/maven-snapshots/" }
  // ...
}
// ...
dependencies {
    implementation group: 'org.htmlunit', name: 'htmlunit', version: '4.14.0-SNAPSHOT'
  // ...
}

License

This project is licensed under the Apache 2.0 License

Development

Checkout these pages on our website for detailed hints about starting with the development:

Some insights

HtmlUnit at openhub

Stargazers

Stargazers