`
rainlife
  • 浏览: 230046 次
  • 性别: Icon_minigender_1
  • 来自: 我也来自火星?
社区版块
存档分类
最新评论

HtmlUnit测试页面

    博客分类:
  • JAVA
阅读更多

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测试代码,则可以作为自动化测试,不过不知道有没有公司这么干的。

分享到:
评论

相关推荐

    htmlunit-2.5

    HtmlUnit测试工具的推出,创意非常好。是一款给java开发用的browser。说它是browser,其实它是对html建模并且提供API来访问页面,点击链接等等的java类库。 这样的测试工具有这样几个优点: 运行起来没有界面,...

    Java测试新技术TestNG和高级概念.part1

    展示了如何测试应用程序元素,包括Java EE APls、数据库、Web页面和XML文件。 展示了高级技术:测试部分失败、工厂、依赖关系测试、远程调用、基于集群的测试服务器群等。 介绍了在Eclipse和IDE中安装TestNG插件。 ...

    Java测试新技术TestNG和高级概念.part2

    展示了如何测试应用程序元素,包括Java EE APls、数据库、Web页面和XML文件。 展示了高级技术:测试部分失败、工厂、依赖关系测试、远程调用、基于集群的测试服务器群等。 介绍了在Eclipse和IDE中安装TestNG插件。 ...

    基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件.zip

    可以用于毕业设计(项目源码+项目说明)目前在window10/11测试环境一切正常,用于演示的图片和部署教程说明都在压缩包里

    基于Apache Nutch和Solr的AJAX页面内容爬取与处理设计源码

    该系统通过Apache Nutch和Solr以及Htmlunit, Selenium WebDriver等组件扩展,实现了对于AJAX加载类型页面的完整页面内容爬取、解析、清洗、持久化、全文检索等处理。项目结构清晰,代码注释详尽,适合用于学习和研究...

    boot-test-cljs:用于启动的 ClojureScript 测试任务

    (WIP):env :htmlunit (默认) 生成用于测试编译和 HTML 页面的脚手架来托管它编译测试提供带有测试的页面使用 HtmlUnit 连接到页面并执行测试从页面捕获测试结果并断开连接:env :nashorn / :env :rhino 为测试编译...

    selenium-js-disabled:守夜人,Selenium,htmlunit

    在禁用JS的情况下进行测试的关键是将浏览器名称htmlunit与Seleniumwebdriver一起使用。 该示例使用了测试框架,但应与支持提供浏览器名称的任何测试框架一起使用。 在Chrome浏览器中使用Selenium服务器,但在Fire...

    xmg-gecco-demo-master.zip

    一个gecco爬虫框架,简单易用,使用jquery风格的选择器抽取元素 ... 单线程测试场景 爬虫采用单线程,测试时间3×24小时,测试期间系统无异常,jvm内存稳定。测试 十、Gecco爬虫框架的线程和队列模型

    selenium2.0_中文帮助文档

    1.3 打开测试页面 2 1.4 GettingStarted 2 第2章 Webdirver对浏览器的支持 4 2.1 HtmlUnit Driver 4 2.2 FireFox Driver 4 2.3 InternetExplorer Driver 4 第3章 使用操作 4 3.1 如何找到页面元素 4 3.1.1 By ID 5 ...

    HttpClient以及获取页面内容应用

    HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。 下载地址:  http://hc.apache.org/downloads.cgi 1.2特性 1. 基于标准、纯净的java语言。...

    webdriver API中文版

    1.3 打开测试页面 3 1.4 GettingStarted 3 第2章 Webdirver对浏览器的支持 5 2.1 HtmlUnit Driver 5 2.2 FireFox Driver 6 2.3 InternetExplorer Driver 6 第3章 使用操作 6 3.1 如何找到页面元素 6 3.1.1 ...

    selenium httpunit测试程序

    项目实现了JAVA底层自动打开页面,模拟事件操作,获取源文件整体功能。 继承了httpunit selenium两组插件包。 包含完全源代码和JAVA包。 自己花了20多个积分,东拼西凑,用了一个星期,总算把程序调通。希望后来者...

    httpUnit完整的web工程实例,包括源码和依赖包,数据页面具有异步数据

    附件是一个完整的web工程(带源码),用jdk1.8及以上编译后可运行, HttpUtilTest类中有两个测试实例,所涉及的数据都有来自ajax异步的

    spring4-1-showcase:Spring4.1新特性

    我的公众号:kaitao-1234567 我的新书: 一书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。...页面自动化测试框架Spring MVC Test HtmlUnit简介 静态资源处理增强

    leaf

    将fluentlenium与htmlunit一起用于UI回归测试。 去做 新功能正在添加。 运行本地mongoDB 运行本地docker run --rm --name local-mongo -p 27017:27017 -d mongo:4-bionic MongoDB的命令docker run --rm --name ...

Global site tag (gtag.js) - Google Analytics