Web测试工具:HtmlUnit
jopen
11年前
介绍
对于Java程序,HtmlUnit是一个“无界面的浏览器”。以 HTML documents 为模型,且提供了一个API允许你来调用页面、填写表单、点击链接等等,就像操作一般的浏览器一样。
其对于JavaScript的支持非常强大(且在持续提升),甚至能够支持相当复杂的Ajax库,可以通过配置来模拟你想模拟的FireFox或Internet Explorer浏览器。
HtmlUnit常常用来测试或者检索网站的数据。
HtmlUnit不是一般的单元测试框架,以一个特别的方法来模拟浏览器从而达到测试的目的,常常在另外的测试框架如Junit 或 TestNg中使用。
与一些开源的工具Canoo WebTest, JWebUnit, WebDriver, JSFUnit, Celerity不同,被当做一个看不见的浏览器来使用。
对于Java程序,HtmlUnit是一个“无界面的浏览器”。以 HTML documents 为模型,且提供了一个API允许你来调用页面、填写表单、点击链接等等,就像操作一般的浏览器一样。
其对于JavaScript的支持非常强大(且在持续提升),甚至能够支持相当复杂的Ajax库,可以通过配置来模拟你想模拟的FireFox或Internet Explorer浏览器。
HtmlUnit常常用来测试或者检索网站的数据。
HtmlUnit不是一般的单元测试框架,以一个特别的方法来模拟浏览器从而达到测试的目的,常常在另外的测试框架如Junit 或 TestNg中使用。
与一些开源的工具Canoo WebTest, JWebUnit, WebDriver, JSFUnit, Celerity不同,被当做一个看不见的浏览器来使用。
- 支持HTTP和HTTPS协议
- 支持cookies
- 能够制定当从服务端获取响应失败时,是抛出异常还是根据内容类型返回特定的页面
- 支持提交方法 POST和GET (HEAD, DELETE, ...)
- 能够定制发送到服务器的请求信息报头
- 对Html响应的支持
- 支持代理服务器
- 支持基本的和 NTLM 认证
- 非常优秀的JavaScript支持
把所有的Jar包放到ClassPath中即可。
HtmlUnit提供非常棒的JavaScript支持,根据配置来模拟浏览器的工作(Firefox 和 internet explore)。运用了Rhino JavaScript 引擎。 一些知名的用于单元测试的JavaScript库包含在HtmlUnit中:
- jQuery 1.2.6: Full support
- MochiKit 1.4.1: Full support
- GWT 2.0.0: Full support
- Sarissa 0.9.9.3: Full support
- MooTools 1.2.1: Full support
- Prototype 1.6.0: Very good support
- Ext JS 2.2: Very good support
- Dojo 1.0.2: Good support
- YUI 2.3.0: Good support
如果要在一个WebClient中关闭</span></span>JavaScript,调用 WebClient.setJavaScriptEnabled(false)
Htmlunit简单使用代码
Htmlunit简单使用代码
import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; import junit.framework.TestCase; /** * @description HtmlUnit工具的简单使用测试 * @author ZhouJingxian * */ public class Test_HtmlUnit extends TestCase{ /** * 测试主页标题 * @throws FailingHttpStatusCodeException * @throws MalformedURLException * @throws IOException */ public void testHomePage() throws FailingHttpStatusCodeException, MalformedURLException, IOException{ final WebClient webClient = new WebClient(); final HtmlPage startPage = webClient.getPage("http://htmlunit.sourceforge.net"); // assertEquals("HtmlUnit - Welcome to HtmlUnit", startPage.getTitleText()); System.out.println("title:"+startPage.getTitleText()); } /** * 测试浏览器 * @throws Exception */ public void testHomePage_Firefox() throws Exception { //火狐2/3 // final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2); //IE6/7 final WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_7); final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); // assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); System.out.println("title:"+page.getTitleText()); } /** * 两个测试类的输出都如下: * title:HtmlUnit - Welcome to HtmlUnit */ }</div> </span></span></span>