HtmlUnit是Java一个开发工具包,利用它写的Java代码可以模仿人点击link,提交表单的功能.主要是用来测试.
可以到这里http://htmlunit.sourceforge.net/了解详细信息.
模仿一个特定的浏览器
通常您会希望将模拟特定浏览器.这样做是通过传递 com.gargoylesoftware.htmlunit.BrowserVersion到的WebClient构造。常数提供了一些常见的浏览器,但您可以创建自己的特定版本的执行一个BrowserVersion 。
- public void homePage_Firefox() throws Exception {
- final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);
- final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
- assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
- }
找到特定元素
一旦你得到了一个参考的HtmlPage ,您可以搜索特定HtmlElement之一的'get'方法,或使用的XPath 。下面是一个例子,找到一个'线'的ID ,搜到了锚的名字:
get 方法
- public void getElements() throws Exception {
- final WebClient webClient = new WebClient();
- final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
- final HtmlDivision div = page.getHtmlElementById("some_div_id");
- final HtmlAnchor anchor = page.getAnchorByName("anchor_name");
Xpath
- public void xpath() throws Exception {
- final WebClient webClient = new WebClient();
- final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
- //get list of all divs
- final List<?> divs = page.getByXPath("//div");
- //get div which has a 'name' attribute of 'John'
- final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0);
- }
使用代理服务器
最后WebClient构造让您可以指定代理服务器信息,在这些情况下,你需要通过一个连接。
- public void homePage_proxy() throws Exception {
- final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "http://myproxyserver", myProxyPort);
- //set proxy username and password
- final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider();
- credentialsProvider.addProxyCredentials("username", "password");
- final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
- assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
- }
指定此BrowserVersion将改变发送到服务器的用户代理header,这行影响一Javascript的一些行为 。
提交表单
我们经常需要改变表单元素的值,并且提交到服务器:
- public void submittingForm() throws Exception {
- final WebClient webClient = new WebClient();
- // Get the first page
- final HtmlPage page1 = webClient.getPage("http://some_url");
- // Get the form that we are dealing with and within that form,
- // find the submit button and the field that we want to change.
- final HtmlForm form = page1.getFormByName("myform");
- final HtmlSubmitInput button = form.getInputByName("submitbutton");
- final HtmlTextInput textField = form.getInputByName("userid");
- // Change the value of the text field
- textField.setValueAttribute("root");
- // Now submit the form by clicking the button and get back the second page.
- final HtmlPage page2 = button.click();
- }
相关推荐
5. **CSS解析**: 对于CSS的支持,HTMLUnit使用了Cascading Style Sheets (CSS) Object Model (CSOM)来解析和应用CSS规则。 6. **异常处理和模拟**: HTMLUnit还包含了各种模拟浏览器行为的组件,如模拟点击、填写...
HTMLUnit使用HttpClient来处理网络通信,包括GET和POST请求,设置请求头,处理重定向等。版本4.5.2提供了一套完整的HTTP协议实现,支持HTTPS和各种HTTP特性。 4. **xml-apis-1.4.01.jar**:这是一个XML API的集合,...
3. JavaScript引擎(如rhino.jar):HTMLUnit使用Rhino引擎来执行JavaScript代码,这是一个开源的JavaScript实现,能够在Java环境中运行。 4. 可能还包括其他辅助库,如httpclient和httpcore,用于处理HTTP请求和...
6. ** Rhino.jar** 或 **nashorn.jar**:这两个jar包分别对应于Mozilla的Rhino JavaScript引擎和Oracle JDK 8中的Nashorn JavaScript引擎,HTMLUnit使用它们来执行网页中的JavaScript代码。Rhino已经被废弃,但在...
HTMLUnit使用了 Rhino 和 WebKit JavaScript 引擎,使得它在处理JavaScript时具有较高的兼容性和性能。 描述中的"htmlunit-2.12-bin.zip"指的是HTMLUnit 2.12的二进制发行版压缩包。这个压缩包通常包含以下组件: ...
10. **Rhino JavaScript引擎**:HTMLUnit使用Rhino JavaScript引擎执行网页中的JavaScript代码,尽管较新的版本可能会使用更现代的JavaScript引擎如Nashorn或GraalVM。 以上列出的jar包共同构建了HTMLUnit的功能,...
HtmlUnit 是 JUnit 的...HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵循 JUnit 测试框架结构的 Java™ 测试程序。 解压后将lib目录下面的jar文件放入工程的classpath就可以使用了
3. **网页解析**:HTMLUnit使用了HtmlParser库来解析HTML文档,它可以解析网页结构,提取元素,并处理嵌套的HTML标签。此外,HTMLUnit还支持XPath和CSS选择器,用于查找和操作页面上的特定元素。 4. **网络通信**:...
3. 文档和示例:可能包含API文档、用户指南以及示例代码,帮助开发者快速理解和使用HTMLUnit。 4. 测试类和资源:用于验证库功能的JUnit测试类和相关的测试资源。 使用HTMLUnit进行网页爬虫开发时,你可以: 1. ...
3. **错误处理**:在使用HTMLUnit时,由于JavaScript执行和网络请求的复杂性,需要处理可能出现的各种异常。 4. **性能优化**:虽然HTMLUnit是为了快速和自动化测试设计的,但在大规模使用时,仍需考虑性能优化,...
请注意,具体的JAR文件版本可能会随着HTMLUnit的更新而变化,因此在实际使用时,最好参考HTMLUnit的官方文档或最新的Maven依赖来获取准确的版本信息。此外,使用这些依赖时,确保遵循相应的授权协议,尊重开源软件的...
使用HTMLUnit,开发者可以编写代码来浏览网页、填写表单、点击链接,甚至执行JavaScript,而无需真正打开一个浏览器。这对于自动化测试、数据抓取和无头爬虫来说非常有用。由于其无头特性,HTMLUnit在服务器端或...
使用HTMLUnit开发Java爬虫时,你需要确保你的环境已经安装了JDK 1.8或更高版本,因为这是HTMLUnit和相关依赖库运行的最低要求。一旦环境配置完成,你可以通过添加这些jar文件到你的项目类路径中,或者如果你使用的是...
本文将深入探讨如何使用HTMLUnit、PhantomJS和JBrowserDriver这三种无头浏览器技术来实现网页抓取。这些工具都基于Java语言,因此适合Java开发者进行网页抓取工作。 首先,HTMLUnit是一个强大的无头Java浏览器,它...
这个参考文档是关于HTMLUnit的API详细说明,对于开发者来说是理解和使用HTMLUnit的重要资源。下面,我们将深入探讨HTMLUnit的核心功能、使用场景以及如何结合API进行实际操作。 一、HTMLUnit的核心功能 1. **网页...
以下是使用HTMLUnit进行此类操作的基本步骤: 1. **导入库**:在Java项目中,你需要添加HTMLUnit的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>net.sourceforge.htmlunit</...