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. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值