Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1529847
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 23:21:55

一起学习

一款新的纯Java浏览器发布了,它可以采用更高级的方式来处理web页面.比如说:填写表单,点击超链接,访问页面某个指定元素(element)的属性或值时,不再需要你去用创建基于低级别的TCP/IPHTTPrequest来处理它们.只要调用getPage(url)方法就可以让所的HTMLJavaScript以及AJAX自动进行处理.

HtmlUnit最大的亮点就是自动测试web页面,甚至还可以和一些复杂的JavaScript库协同工作.(比如说GoogleWebToolkit1.4.60就已经通过测试验证了).某些场合下,还可以用来进行web scraping(1)或下载网站的内容.

HtmlUnit2.0版本增加了很多新的特性:

l W3CDOM实现

l Java5支持

l 更好的支持XPath

l 增强对不合法的HTML处理能力(特别是抓数据的时候,个人觉得这个比较重要)

l 增强对JavaScript的支持

而最新的HtmlUnit2.1版本则主要是改善用户反应的一些性能问题.

你可以通过HtmlUnit的官方网站了解更情况,他们期待你的反馈.

下面我们稍微来几个入门例子:

1. 最普通的用法:

Java代码复制代码
  1. public void testHomePage() throws Exception {
  2. final WebClient webClient = new WebClient();
  3. final HtmlPage page = (HtmlPage) webClient.getPage("");
  4. assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
  5. }

2. 模拟FireFox2

Java代码复制代码
  1. public void testHomePage() throws Exception {
  2. final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);
  3. final HtmlPage page = (HtmlPage) webClient.getPage("");
  4. assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
  5. }

3. 使用代理:

Java代码复制代码
  1. public void testHomePage() throws Exception {
  2. final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "", 8000);
  3. final HtmlPage page = (HtmlPage) webClient.getPage("");
  4. assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
  5. }

4 一个表单提交示例:

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

上述代码非常简洁明了,如果你需要这样一个工具,那么让大胆尝试吧.

【注1Web scraper是一种与spider类似的技术,不过它具有更多合法性问题。scraper是一种spider,其目标是为了从Web上获取特定的内容,例如产品的成本或服务。scraper的一种用途是为了获得有竞争力的价格,从而确定给定产品的价格,以便能够制定出自己产品的合理价格或相应地进行宣传。scraper还可以从很多Web站点上搜集大量数据并将这些信息提供给用户。  BTW:我曾经用javaURL类做过此类事情,但现在有了HtmlUnit会更得以应手.

TAG: hmlunit2

下载本文示例代码


无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布无畏的Java浏览器HmlUnit2.1发布
阅读(293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~