阅读更多

13顶
1踩

编程语言

原创新闻 无畏的Java浏览器HmlUnit2.1发布

2008-04-18 09:08 by 资深记者 kyo100900 评论(4) 有8929人浏览
一款新的纯Java浏览器发布了,它可以采用更高级的方式来处理web页面.比如说:填写表单,点击超链接,访问页面某个指定元素(element)的属性或值时,不再需要你去用创建基于低级别的TCP/IP或HTTP的request来处理它们.只要调用getPage(url)方法就可以让所的HTML,JavaScript以及AJAX自动进行处理.

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

HtmlUnit的2.0版本增加了很多新的特性:

l         W3C的DOM实现

l         Java5支持

l         更好的支持XPath

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

l         增强对JavaScript的支持

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

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

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

1.       最普通的用法:

public void testHomePage() throws Exception {
    final WebClient webClient = new WebClient();
    final HtmlPage page = (HtmlPage) webClient.getPage("http://htmlunit.sourceforge.net");
assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
}


2.       模拟FireFox2:

public void testHomePage() throws Exception {
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);
    final HtmlPage page = (HtmlPage) webClient.getPage("http://htmlunit.sourceforge.net");
    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());

}


3.       使用代理:
public void testHomePage() throws Exception {
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "http://myproxyserver", 8000);
    final HtmlPage page = (HtmlPage) webClient.getPage("http://htmlunit.sourceforge.net");
    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
}


4       一个表单提交示例:

public void testHomePage() throws Exception {
    final WebClient webClient = new WebClient();

    // Get the first page
    final HtmlPage page1 = (HtmlPage) 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 = (HtmlSubmitInput) form.getInputByName("submitbutton");
    final HtmlTextInput textField = (HtmlTextInput) 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 = (HtmlPage) button.click();
}


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

【注1】Web scraper 是一种与 spider 类似的技术,不过它具有更多合法性问题。scraper 是一种 spider,其目标是为了从 Web 上获取特定的内容,例如产品的成本或服务。scraper 的一种用途是为了获得有竞争力的价格,从而确定给定产品的价格,以便能够制定出自己产品的合理价格或相应地进行宣传。scraper 还可以从很多 Web 站点上搜集大量数据并将这些信息提供给用户。   BTW:我曾经用java的URL类做过此类事情,但现在有了HtmlUnit会更得以应手.
来自: theserverside
13
1
评论 共 4 条 请登录后发表评论
4 楼 cppasm 2008-04-18 22:32
今天刚好用过了,不爽,因为当返回json格式的数据时它就傻眼了,还是只有自己用commons-httpclient来写。
3 楼 jiangyubao 2008-04-18 16:39
很好,很强大,我喜欢
2 楼 funseason 2008-04-18 10:55
我也出一个ruby浏览器好了~
1 楼 Eastsun 2008-04-18 10:13
还有个WebRenderer也蛮强大,是基于Swing的web渲染器,支持HTML 4.01, CSS 1 & 2, SSL, JavaScript, XHTML, XSL etc.
但不是纯JAVA的,使用了Mozilla的DOM解析器

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 软件工程国家标准文档GB8567-88

    软件工程国家标准文档GB8567-88 软件工程国家标准文档GB8567-88 软件工程国家标准文档GB8567-88

  • 项目开发总结报告(GB8567——88)(转载)

    项目开发总结报告(GB8567——88)1引言1.1编写目的说明编写这份项目开发总结报告的目的,指出预期的阅读范围。1.2背景说明:a.  本项目的名称和所开发出来的软件系统的名称;b.  此软件的任务提出者、开发者、用户及安装此软件的计算中心。1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。1.4参考资料列出要用到的参考资料,如:a.  本项目的已核准的计划任务书或合同、上级

  • 《GB T 8567-2006 计算机软件文档编制规范》:提升软件文档质量的必备指南

    《GB T 8567-2006 计算机软件文档编制规范》:提升软件文档质量的必备指南 【下载地址】GBT8567-2006计算机软件文档编制规范分享 本仓库提供了一个重要的资源文件下载,即《GB T 8567-2006 计算机软件文档编制规范》。该规范是中国国家标准,旨在为计算机软件的文档编制提供统一的规范和要求,确保软...

  • 【软件工程】——软工文档(GB8567--88)

    一.简介 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。 软工中主要的六阶段:制定计划,需求分析和定义,软件设计,软件程序编写,软件测试,运行和维护。这也就是软件开发所要经历的一个过程。文档在这六个阶段中起着连线的作用。这些文档记录了开发过程中的开发轨迹,是开发人员工作的依据,也是用

  • 软件工程课程实践-项目开发总结报告

    该基金管理系统采用BS结构,由前端界面,后端,数据库组成。系统主要分为基金市场,基金查询,基金管理和用户管理四大功能模块。用户可通过建立个人账户,查看每日基金的各项指标,同时进行购买、抛售以及统计;并且可以查看自己的各项操作记录。该基金管理系统界面简洁美观,功能友好。系统采用了可视化的图表,方便用户可视化地分析数据的对比与变化,给用户更加直观的感受和分析个人的基金,并且通过我们的系统可以在线购买和抛售,免去了一些繁琐的过程,增强了用户体验。1. 可行性分析报告 2. 软件开发计划 3. 软件需求规格说明书

  • 软件开发标准(文档模板)

    操作手册(GB8567——88)1引言1.1编写目的说明编写这份操作手册的目的,指出预期的读者。1.2前景说明:a.  这份操作手册所描述的软件系统的名称;b.  该软件项目的任务提出者、开发者、用户(或首批用户)及安装该软件的计算中心。1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。1.4参考资料列出有用的参考资料,如:a. 

  • 软件程序设计规范(代码编写规范文档)-word下载

    程序的编码是一个创造性极强的工作,必须要遵守一定的规则和限制,编码风格的重要性对软件项目开发来说是不言而喻的。开发工程师在开发过程中必须遵守本规范,规范是代码编写及代码验收等管理环节中必须执行的标准。(一)一开始就必须正确的使用规范。

  • 软件设计文档国家标准GB8567-2006.zip

    GB8567-2006计算机软件文档编制规范及word版, 包含: 可行性分析(研究)报告(FAR).doc 软件开发计划(SDP).doc 软件测试计划(STP).doc 软件安装计划(SIP).doc 软件移交计划(STrP).doc 运行概念说明(OCD).doc 系统(子系统)需求规格说明(SSS).doc 接口需求规格说明(IRS).doc 系统(子系统)设计(结构设计)说明(SSDD).doc 接口设计说明(IDD).doc 软件需求规格说明(SRS).doc 数据需求说明(DRD).doc 软件需求变更单.doc 计算机编程手册(CPM).doc 软件用户手册(SUM).doc 计算机操作手册(COM).doc 项目开发总结报告(PDSR).doc 开发进度月报(DPMR).doc 软件质量保证计划(SQAP).doc 软件配置管理计划(SCMP).doc

  • 教你怎样做项目开发总结报告[转]

    转自S8S8,觉得自己会用得上,所以存档于此。-----------------------------------------------------教你怎样做项目开发总结报告I 引言 1.1编写目的   说明编写这份项目开发总结报告的目的,指出预期的阅读范围。1.2背景   说明:   a.本项目的名称和所开发出来的软件系统的名称;  b.此软件的任务提出者、开发者、用户及安装此软件的

  • GB 8567-2006计算机软件文档编制规范.pdf

    GB8567-2006计算机软件文档编制规范

  • 软件开发文档-详细设计文档

    引言 引言也称前言、序言或概述经常作为科技论文的开端,提出文中要研究的问题,引导读者阅读和理解全文编写目的 帮助开发人员理解项目的业务逻辑术语描述执行标准与相关文档 编码标准,文件管理标准,版本管理标准项目概述 1.背景 2.现状项目目标编码规范系统功能概述 系统功能总图系统总体介绍系统模块设计 模块结构图,模块汇总表,功能简述系统子模块 模块描述[功能点分析-],性能要求,模块类图

  • 软件研发相关国家标准汇总

    大类 体系 标准 质量 IOS 9000 GBT 19001-2016 质量管理体系 要求 GB_T 19000-2016 质量管理体系 基础和术语 IOS 1400 GBT 24001-2016 环境管理体系 要求及使用指南 IOS/IEC 20000 ISO 20000-1-2018 信息技术 服务管理 服务体系 要求 IOS 2700 ISO 27001-2013 信息安全管理体系 ...

  • 模块开发卷宗(GB8567——88)

    模块开发卷宗(GB8567——88) 1标题 软件系统名称和标识符 模块名称和标识符(如果本卷宗包含多于一个的模块,则用这组模块的功能标识代替模块名) 程序编制员签名 卷宗的修改文本序号 修改完成日期 卷宗序号(说明本卷宗在整个卷宗中的序号) 编排日期(说明整个卷宗最近的一次编排日期) 2模块开发情况表 3功能说明 扼要说明本模块(或本组模块)的功能,主要是输入、要求的处理、...

  • 20.9.7 项目开发总结报告

    项目开发总结报告 项目总结最后价值的东西是经验、教训的总结。 项目开发总结报告的编制,根据GB/T 8567-2006的规定,项目总结报告应包含以下几个部分的内容: (1) 引言。标识、系统概述、文档概述。 (2) 引用文件。引用文档的编号、标题、修改版本和日期。 (3)实际开发效果。概要性总结:产品、主要功能和性能、基本流程、进度、费用。 (4)开发工作评价。对生产效率的评价、对产品质量的评价。 (5)缺陷与处理。 (6)经验与教...

  • 无法启动此程序,因为计算机中丢失chrome_elf.dll。尝试重新安装该程序以解决此问题

    问题: 无法启动此程序,因为计算机中丢失chrome_elf.dll。尝试重新安装该程序以解决此问题 如下图:       解决: 看下C:\Windows\SysWOW64下没这个文件   没有的话下载chrome_eft.dll          http://www.gezila.com/ruanjian/xitong/100654.html 把chrome_eft....

  • 项目开发总结报告

    1 引言 1.1编写目的 软件开发中的概要设计,主要解决实现该软件需求的程序模块设计问题。包括如何把该软件程序划分成若干个模块、决定哥哥模块之间的接口、模块之间传递的信息,以及模块构造的设计等。体现了用户需求与应用软件之间的关系,在设计过程中起到了提纲挈领的作用。 1.2背景 开发软件名称:基于安卓开发的《自习任我行》 项目开发成员:杨波、崔海营、周亚豪、闵芮、高琪、蔡容玉、张...

  • 项目文章

    1引言 1.1编写目的 XXX公司业务管理系统的开发已经基本完成。写此项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的订制开发; 让我在今后的项目开发中有更多的有据的资料来规范我们的开发过程和提高我们的开发效率,从而创造更多公司效益。 1.2背景 项目名称:XXX业务管理系统 软件名称:XXX业务系统 客户:XXX 用户:XXX员工 1.3参考资料 项目开...

  • 项目开发文档——项目开发总结报告

    项目开发总结报告 1 引言 1.1 编写目的:阐明编写总结报告的目的并指明读者对象。 1.2 项目背景:说明项目的来源、委托单位、开发单位及主管部门。 1.3 定义:列出报告中所用到的专门术语的定义和缩写词的原意。 1.4参考资料:列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:项目的计划任务书、合同或批文;项目开发计划;需求规格说明书;概要设计说明书;详细设计说明书;用户...

Global site tag (gtag.js) - Google Analytics