HtmlUnit简介:
引自 www.open-open.com
HtmlUnit
是 JUnit 的扩展测试框架之一。HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了。HtmlUnit 使用例如
table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵循 JUnit 测试框架结构的 Java™ 测试程序。
我们可以在http://htmlunit.sourceforge.net/上面下载HtmlUnit,最新版本是1.4。
解压后将lib目录下面的jar文件放入工程的classpath就可以使用了。
基本套路
对于一些开源框架的使用,都有一定的基本套路,对于HtmlUnit,由于是对JUnit的扩展,当然,也需要继承自TestCase,并且也可以Override相应的setUp()和tearDown()方法。对于HtmlUnit的使用,也有着基本的套路,如下:
public void testHomePage() throws Exception {
// 新建一个WebClient对象,此对象相当于浏览器
final WebClient webClient = new WebClient();
// 构造一个URL,指向需要测试的URL,如http://www.iteye.com
URL url = new URL("http://www.iteye.com");
// 通过getPage()方法,返回相应的页面
HtmlPage page = (HtmlPage) webClient.getPage(url);
// System.out.println(page.getTitleText());
assertEquals(
"JavaEye Java编程 Spring框架 AJAX技术 Agile敏捷软件开发 ruby on rails实践 - JavaEye做最棒的软件开发交流社区",
page.getTitleText());
}
WebClient对象提供了一系列涉及到浏览器的方法,比如像
setThrowExceptionOnScriptError(false|true)-是否抛出页面javascript错误
setThrowExceptionOnFailingStatusCode(false|true)-是否抛出response的错误
HtmlPage对应页面,getTitleText()返回页面的title。
执行测试,就会看到我们所喜爱的绿条。
HtmlUnit的页面组件
像
上面的HtmlPage,HtmlUnit中定义了许多页面组件对象,像HtmlForm对应Form表单,HtmlImage对应页面中的img标签,
HtmlInput对应页面中的input标签,HtmlAnchor对应页面中的超链接,页面中的每一个标签,HtmlUnit都会有相对应的对象,具
体的,可以参看随HtmlUnit下载的doc文档。
超链接
// 或取一个<a>的超链接
//HtmlAnchor anchor = (HtmlAnchor) page.getAnchorByName("welcome");
page = (HtmlPage) page.getAnchorByName("welcome").click();
String pageContent = page.getWebResponse().getContentAsString();
System.out.println(pageContent);
Form提交
只是简单的测试一个页面的title,当然无法满足需求,对于WEB应用,有着大量的表单,所以HtmlUnit提供了HtmlForm这个对象,以及表单操作的相应方法:
public void testHomePage() throws Exception {
final WebClient webClient = new WebClient();
// 获取首页
final HtmlPage page1 = (HtmlPage) webClient.getPage("http://htmlunit.sourceforge.net");
// 根据form的名字获取页面表单,也可以通过索引来获取:page.getForms().get(0)
final HtmlForm form = page1.getFormByName("myform");
final HtmlSubmitInput button
= (HtmlSubmitInput) form.getInputByName("submitbutton");
final HtmlTextInput textField
= (HtmlTextInput) form.getInputByName("userid");
// 设置表单域的值
textField.setValueAttribute("root");
// 提交表单,返回提交表单后跳转的页面
final HtmlPage page2 = (HtmlPage) button.click();
}
表
单的提交,超链接的跳转,都是通过click()方法,既通过鼠标点击事件触发的。它们都可以返回相应的HtmlPage对象,然后通过HtmlPage
对象的相应方法来测试,其实,HtmlPage对象,就是包装了页面Html的一个对象,可以通过page.getWebResponse().
getContentAsString()直接返回页面的html代码,然后通过HTML代码来测试:
String pageContent = page.getWebResponse().getContentAsString();
System.out.println(pageContent);
int indexInt = pageContent.indexOf(WELCOME);
// assert whether Login successful, using user and password
assertTrue(indexInt != -1);
页面中的javascript
对于页面中的javascript,HtmlUnit并没有太好的测试方法,也只能通过相应的ScriptEngine来处理。
对于HtmlUnit,个人感觉实用性并不太大。当然,如果有专人写HtmlUnit测试代码,则可以作为自动化测试,不过不知道有没有公司这么干的。
分享到:
- 2008-03-02 22:29
- 浏览 9885
- 评论(0)
- 论坛回复 / 浏览 (0 / 7360)
- 查看更多
相关推荐
例如,你可以创建一个HTMLUnit测试用例,打开网页,模拟用户登录,然后检查特定元素是否显示正确。此外,由于HTMLUnit支持JavaScript,它还能处理那些依赖于客户端脚本的复杂交互。 总之,HTMLUnit-2.27是一个强大...
HTMLUnit是一个强大的Java库,它模拟了一个无头Web浏览器,主要用于自动化测试和网页抓取。在版本2.23的zip文件中,我们主要关注HTMLUnit的核心功能和它如何帮助开发者处理HTML内容。 HTMLUnit的核心是基于Jakarta ...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和交互。这个"htmlunit基本jar包"包含了运行HTMLUnit所需的所有核心组件,无需通过Maven来管理和依赖。这意味着用户可以直接在项目中...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的导航和交互。这个库在测试、数据抓取以及不需图形用户界面的场景中非常有用。"htmlUnit所需jar包"的标题表明这是一个包含HTMLUnit运行所需...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和抓取。这个库的核心功能是能够解析、渲染和执行JavaScript,从而使得开发者可以在没有实际浏览器环境的情况下,对网页进行功能测试...
创建一个简单的HTMLUnit测试用例可能如下所示: ```java import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class HtmlUnitTest { public static void main(String[] args) { HtmlUnitDriver ...
使用HTMLUnit进行单元测试时,你可以创建一个测试类,通过调用HTMLUnit提供的API来初始化一个WebClient对象,然后打开目标网页,查找并操作页面元素,最后检查结果是否符合预期。例如,你可以模拟点击按钮、填写表单...
4. **API接口**:HtmlUnit提供了一套丰富的Java接口和类,使得开发者可以方便地创建、操作和测试Web页面。这些API包括WebClient(用于发起HTTP请求)、HtmlPage(表示一个HTML页面)、WebElement(表示页面上的元素...
HtmlUnit 是一个强大的Java库,它模拟了一个无头Web浏览器,允许开发者进行自动化测试和网页抓取。在HtmlUnit 2.8版本中,你可以利用它来执行JavaScript、处理Ajax请求,以及与网页上的各种元素交互,而无需实际运行...
HTMLUnit是一个Java库,模拟一个无头Web浏览器,主要用于自动化测试和网页抓取。它能够解析HTML、执行JavaScript以及处理CSS样式,而无需在后台显示实际的浏览器窗口。"htmlunit2.9"指的是HTMLUnit的2.9版本,这个...
3. **JavaScript支持**:HTMLUnit的一大特点是它支持JavaScript执行,这意味着它可以处理动态加载的内容和页面交互,这对于测试复杂的Web应用至关重要。 4. **API使用**:HTMLUnit提供了一套丰富的Java API,允许...
结合`HtmlUnitTest`这个压缩包中的文件,可能是包含一些示例测试用例或演示如何使用HTMLUnit进行实战操作的代码。通过阅读这些文件,你可以更深入地了解HTMLUnit的具体用法,并学习如何将其应用于实际项目中。在测试...
HTMLUnit是一个Java库,它模拟了一个无头Web浏览器,用于自动化网页测试和抓取。它提供了JavaScript支持,能够处理AJAX请求,使开发者能够在没有实际图形界面的情况下与网页交互。这个"htmlunit-2.1.5源码"包包含了...
这个库对于自动化测试、数据抓取和网页爬虫项目非常有用。标题提到的“htmlunit依赖jar包”是指为了正确运行HTMLUnit,你需要的一系列Java类库。 首先,`htmlunit-2.9.jar`是HTMLUnit的核心库文件,包含了HTMLUnit...
3. **模拟用户行为**:它可以模拟鼠标点击、键盘输入,甚至处理页面的异步加载,这有助于测试复杂的用户交互流程。 4. **HTTP客户端**:HTMLUnit提供了HTTP客户端接口,可以设置请求头,发送GET和POST请求,以及...
HtmlUnit测试工具的推出,创意非常好。是一款给java开发用的browser。说它是browser,其实它是对html建模并且提供API来访问页面,点击链接等等的java类库。 这样的测试工具有这样几个优点: 运行起来没有界面,...
HTMLUnit是一个Java库,它提供了一个无头浏览器的模拟,允许开发者在没有真实浏览器环境的情况下进行Web客户端测试和自动化。这个“htmlunit-2.25”压缩包包含的就是HTMLUnit库的版本2.25,是进行无头网页交互的关键...
HTMLUnit是一个Java库,它模拟了一个无头浏览器,主要用于自动化测试和网页抓取。这个库的核心功能是能够解析和执行HTML、JavaScript以及相关的Web技术,从而使得开发者可以在没有实际浏览器环境的情况下,对网页...
HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化网页测试和网页抓取。这个库允许开发者在没有实际浏览器的情况下与HTML页面进行交互,执行JavaScript,并获取页面加载后的结果。它对于进行功能测试...
- **性能测试**:在无GUI环境下,HTMLUnit可以帮助评估网站的性能,例如页面加载速度。 操作HTMLUnit的基本步骤如下: 1. **引入依赖**:在Java项目中,你需要将HTMLUnit的库文件(在"lib"目录下)引入到类路径中...