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. }
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 方法
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");
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
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. }
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构造让您可以指定代理服务器信息,在这些情况下,你需要通过一个连接。
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. }
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的一些行为 。
提交表单
我们经常需要改变表单元素的值,并且提交到服务器:
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. }
分享到:
相关推荐
htmlutil所需jar包,HtmlUnit本来是一款自动化测试的工具,它采用了HttpClient和Java自带的网络api结合来实现
使用htmlutil包获取网页中的图片,获取后的图片保存在本机中。
这是一个htmlutil包,可以实现网页的模拟功能,使用此包的方法可以模拟页面的点击等。
html 工具类 * @param disrPath 生成html的存放路径 * @param fileName 生成html名字 * @return void 返回类型
最新版htmlutil,java无界面浏览器开发包
这两个类通过html的路径,将html提取为html内容的字符串,然后进行提取body里的内容,进行去除行间样式以及css等,然后还可以去除空行等,筛选出不需要的标签,当前类保留img标签,转换后可以自行设置img网络地址,...
知网 知网_基于Java+HtmlUtil+jsoup实现爬取知网中国专利数据
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。...
这款EXCEL转换HTML利用PIO万能转换,来源与CSDN网上资源,我只是吧所有JAR包和程序源码放在一起便于快速开发测试使用。本人测试整理好用。
获取执行js代码后的html文档。
htmlunit java版无界面浏览器 实现网页自动登录利器 官方最新下载 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源...
htmlunit jar zip 2.23 用于html爬虫
htmlunit是一款开源的java页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。...
3、com.baijob.commonTools.net.HtmlUtil HTML工具类,暂时只提供特殊字符转义 4、com.baijob.commonTools.net.SocketUtil socket工具类。 isUsableLocalPort() 检测本地某个端口是否可用(可用是指没有被其他程序...
赠送jar包:htmlunit-2.33.jar; 赠送原API文档:htmlunit-2.33-javadoc.jar; 赠送源代码:htmlunit-2.33-sources.jar; 赠送Maven依赖信息文件:htmlunit-2.33.pom; 包含翻译后的API文档:htmlunit-2.33-javadoc-...
java_utils常用工具类打包,欲善其事必先利其器,本资源内容为Java开发常用工具类打包,如BeanUtil,ArrayUtil,HtmlUtil,ClassUtil,DateUtil,FileUtil,FontUtil,ImageUtil,IOUtil, IPUtil, MapUtil,MailUtil,...
资源内容:工欲善其事必先利其器,本资源内容为Java开发常用工具类打包,如BeanUtil,ArrayUtil,HtmlUtil,ClassUtil,DateUtil,FileUtil,FontUtil,ImageUtil,IOUtil, IPUtil, MapUtil,MailUtil, NumberUtil,...
资源内容:工欲善其事必先利其器,本资源内容为Java开发常用工具类打包,如BeanUtil,ArrayUtil,HtmlUtil,ClassUtil,DateUtil,FileUtil,FontUtil,ImageUtil,IOUtil, IPUtil, MapUtil,MailUtil, NumberUtil,...
资源内容:工欲善其事必先利其器,本资源内容为Java开发常用工具类打包,如BeanUtil,ArrayUtil,HtmlUtil,ClassUtil,DateUtil,FileUtil,FontUtil,ImageUtil,IOUtil, IPUtil, MapUtil,MailUtil, NumberUtil,...