HtmlUnit

HtmlUnit is a headless web browser written in Java. It allows high-level manipulation of websites from other Java code, including filling and submitting forms and clicking hyperlinks. It also provides access to the structure and the details within received web pages. HtmlUnit emulates parts of browser behaviour including the lower-level aspects of TCP/IP and HTTP. A sequence such as codice_1, codice_2, codice_3 allows a user to navigate through hypertext and obtain web pages that include HTML, JavaScript, Ajax and cookies. This headless browser can deal with HTTPS security, basic HTTP authentication, automatic page redirection and other HTTP headers. It allows Java test code to examine returned pages either as text, an XML DOM, or as collections of forms, tables, and links.
The goal is to simulate real browsers; namely Chrome, Firefox ESR 38, Internet Explorer 8 and 11, and Edge (experimental).
The most common use of HtmlUnit is test automation of web pages, but sometimes it can be used for web scraping, or downloading website content.