`

HtmlUnit 的使用

阅读更多

HtmlUnit是Java一个开发工具包,利用它写的Java代码可以模仿人点击link,提交表单的功能.主要是用来测试. 
    可以到这里http://htmlunit.sourceforge.net/了解详细信息. 
    模仿一个特定的浏览器 

    通常您会希望将模拟特定浏览器.这样做是通过传递  com.gargoylesoftware.htmlunit.BrowserVersion到的WebClient构造。常数提供了一些常见的浏览器,但您可以创建自己的特定版本的执行一个BrowserVersion 。 
   

Java代码  收藏代码
  1. public void homePage_Firefox() throws Exception {  
  2.     final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);  
  3.     final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");  
  4.     assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());  
  5. }  


找到特定元素 
    一旦你得到了一个参考的HtmlPage ,您可以搜索特定HtmlElement之一的'get'方法,或使用的XPath 。下面是一个例子,找到一个'线'的ID ,搜到了锚的名字: 
get 方法 
  

Java代码  收藏代码
  1. public void getElements() throws Exception {  
  2. final WebClient webClient = new WebClient();  
  3. final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");  
  4. final HtmlDivision div = page.getHtmlElementById("some_div_id");  
  5. final HtmlAnchor anchor = page.getAnchorByName("anchor_name");  


Xpath 

Java代码  收藏代码
  1. public void xpath() throws Exception {  
  2.     final WebClient webClient = new WebClient();  
  3.     final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");  
  4.   
  5.     //get list of all divs  
  6.     final List<?> divs = page.getByXPath("//div");  
  7.   
  8.     //get div which has a 'name' attribute of 'John'  
  9.     final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0);  
  10. }  


使用代理服务器 
最后WebClient构造让您可以指定代理服务器信息,在这些情况下,你需要通过一个连接。 

Java代码  收藏代码
  1. public void homePage_proxy() throws Exception {  
  2.     final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "http://myproxyserver", myProxyPort);  
  3.   
  4.     //set proxy username and password   
  5.     final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider();  
  6.     credentialsProvider.addProxyCredentials("username""password");  
  7.   
  8.     final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");  
  9.     assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());  
  10. }  


指定此BrowserVersion将改变发送到服务器的用户代理header,这行影响一Javascript的一些行为 。 
提交表单 
我们经常需要改变表单元素的值,并且提交到服务器: 

Java代码  收藏代码
  1. public void submittingForm() throws Exception {  
  2.     final WebClient webClient = new WebClient();  
  3.   
  4.     // Get the first page  
  5.     final HtmlPage page1 = webClient.getPage("http://some_url");  
  6.   
  7.     // Get the form that we are dealing with and within that form,   
  8.     // find the submit button and the field that we want to change.  
  9.     final HtmlForm form = page1.getFormByName("myform");  
  10.   
  11.     final HtmlSubmitInput button = form.getInputByName("submitbutton");  
  12.     final HtmlTextInput textField = form.getInputByName("userid");  
  13.   
  14.     // Change the value of the text field  
  15.     textField.setValueAttribute("root");  
  16.   
  17.     // Now submit the form by clicking the button and get back the second page.  
  18.     final HtmlPage page2 = button.click();  
  19. }  
分享到:
评论

相关推荐

    htmlunit依赖jar包

    5. **CSS解析**: 对于CSS的支持,HTMLUnit使用了Cascading Style Sheets (CSS) Object Model (CSOM)来解析和应用CSS规则。 6. **异常处理和模拟**: HTMLUnit还包含了各种模拟浏览器行为的组件,如模拟点击、填写...

    htmlunit 及其 依赖包

    HTMLUnit使用HttpClient来处理网络通信,包括GET和POST请求,设置请求头,处理重定向等。版本4.5.2提供了一套完整的HTTP协议实现,支持HTTPS和各种HTTP特性。 4. **xml-apis-1.4.01.jar**:这是一个XML API的集合,...

    htmlunit-2.3..zip

    3. JavaScript引擎(如rhino.jar):HTMLUnit使用Rhino引擎来执行JavaScript代码,这是一个开源的JavaScript实现,能够在Java环境中运行。 4. 可能还包括其他辅助库,如httpclient和httpcore,用于处理HTTP请求和...

    htmlunit用到的jar包

    6. ** Rhino.jar** 或 **nashorn.jar**:这两个jar包分别对应于Mozilla的Rhino JavaScript引擎和Oracle JDK 8中的Nashorn JavaScript引擎,HTMLUnit使用它们来执行网页中的JavaScript代码。Rhino已经被废弃,但在...

    htmlunit 2.12

    HTMLUnit使用了 Rhino 和 WebKit JavaScript 引擎,使得它在处理JavaScript时具有较高的兼容性和性能。 描述中的"htmlunit-2.12-bin.zip"指的是HTMLUnit 2.12的二进制发行版压缩包。这个压缩包通常包含以下组件: ...

    htmlunit涉及的所有jar包

    10. **Rhino JavaScript引擎**:HTMLUnit使用Rhino JavaScript引擎执行网页中的JavaScript代码,尽管较新的版本可能会使用更现代的JavaScript引擎如Nashorn或GraalVM。 以上列出的jar包共同构建了HTMLUnit的功能,...

    htmlunit2.8

    HtmlUnit 是 JUnit 的...HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵循 JUnit 测试框架结构的 Java™ 测试程序。 解压后将lib目录下面的jar文件放入工程的classpath就可以使用了

    htmlunit jar包

    3. **网页解析**:HTMLUnit使用了HtmlParser库来解析HTML文档,它可以解析网页结构,提取元素,并处理嵌套的HTML标签。此外,HTMLUnit还支持XPath和CSS选择器,用于查找和操作页面上的特定元素。 4. **网络通信**:...

    Htmlunit2.23-bin.zip

    3. 文档和示例:可能包含API文档、用户指南以及示例代码,帮助开发者快速理解和使用HTMLUnit。 4. 测试类和资源:用于验证库功能的JUnit测试类和相关的测试资源。 使用HTMLUnit进行网页爬虫开发时,你可以: 1. ...

    htmlunit基本jar包

    3. **错误处理**:在使用HTMLUnit时,由于JavaScript执行和网络请求的复杂性,需要处理可能出现的各种异常。 4. **性能优化**:虽然HTMLUnit是为了快速和自动化测试设计的,但在大规模使用时,仍需考虑性能优化,...

    htmlunit依赖的所有jar

    请注意,具体的JAR文件版本可能会随着HTMLUnit的更新而变化,因此在实际使用时,最好参考HTMLUnit的官方文档或最新的Maven依赖来获取准确的版本信息。此外,使用这些依赖时,确保遵循相应的授权协议,尊重开源软件的...

    webCrawl:使用HTMLUnit,PhantomJS和JBrowserDriver抓取网址

    本文将深入探讨如何使用HTMLUnit、PhantomJS和JBrowserDriver这三种无头浏览器技术来实现网页抓取。这些工具都基于Java语言,因此适合Java开发者进行网页抓取工作。 首先,HTMLUnit是一个强大的无头Java浏览器,它...

    htmlUnit所需jar包

    使用HTMLUnit,开发者可以编写代码来浏览网页、填写表单、点击链接,甚至执行JavaScript,而无需真正打开一个浏览器。这对于自动化测试、数据抓取和无头爬虫来说非常有用。由于其无头特性,HTMLUnit在服务器端或...

    htmlunit-2.36和htmlunit-2.50,包括关联文件

    使用HTMLUnit开发Java爬虫时,你需要确保你的环境已经安装了JDK 1.8或更高版本,因为这是HTMLUnit和相关依赖库运行的最低要求。一旦环境配置完成,你可以通过添加这些jar文件到你的项目类路径中,或者如果你使用的是...

    htmlunit参考文档

    这个参考文档是关于HTMLUnit的API详细说明,对于开发者来说是理解和使用HTMLUnit的重要资源。下面,我们将深入探讨HTMLUnit的核心功能、使用场景以及如何结合API进行实际操作。 一、HTMLUnit的核心功能 1. **网页...

    通过htmlunit获取执行js代码后的html文档

    以下是使用HTMLUnit进行此类操作的基本步骤: 1. **导入库**:在Java项目中,你需要添加HTMLUnit的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;net.sourceforge.htmlunit&lt;/...

Global site tag (gtag.js) - Google Analytics