HtmlUnit是Junit 的扩展测试框架之一,该框架模拟浏览器的行为,开发者可以使用其提供的API对页面的元素进行操作。HtmlUnit支持HTTP,HTTPS,COOKIE,表单的POST和GET方法,能够对HTML文档进行包装,页面的各种元素都可以被当作对象进行调用,对JavaScript的支持也比较好。
软件地址:http://htmlunit.sourceforge.net/

下面介绍HtmlUnit的简单实用:

import java.net.URL; import junit.framework.TestCase; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; import com.gargoylesoftware.htmlunit.html.HtmlTextInput; public class HtmlUnitTest extends TestCase{ /** * 模拟特定浏览器.这样做是通过传递 com.gargoylesoftware.htmlunit.BrowserVersion到的WebClient构造。 * 常数提供了一些常见的浏览器,但您可以创建自己的特定版本的执行一个BrowserVersion 。 * @throws Exception */ public void testHomePage() throws Exception { // 新建一个WebClient对象,此对象相当于浏览器 final WebClient webClient=new WebClient(BrowserVersion.INTERNET_EXPLORER_7); // 构造一个URL,指向需要测试的URL,如http://www.javaeye.com URL url=new URL("http://www.163.com"); // 通过getPage()方法,返回相应的页面 final HtmlPage page=webClient.getPage(url); System.out.println("sss"+page.getTitleText()); //断言网页的Title是“网易” assertEquals("网易", page.getTitleText()); } /** * 测试表单 * @throws Exception */ public void testFormPage() throws Exception { final WebClient webClient = new WebClient(); // 获取首页 final HtmlPage page = (HtmlPage) webClient.getPage("http://127.0.0.1:8080/SecurityCenter/index.jsp"); // 根据form的名字获取页面表单,也可以通过索引来获取:page.getForms().get(0) final HtmlForm form = page.getFormByName("myform"); final HtmlSubmitInput button= (HtmlSubmitInput) form.getInputByNam("mysubmit"); final HtmlTextInput textField = (HtmlTextInput) form.getInputByName("tbException.exceptionDesc"); // 设置表单域的值 textField.setValueAttribute("测试数据"); // 提交表单,返回提交表单后跳转的页面 final HtmlPage page2 = (HtmlPage) button.click(); } /*** * 测试超链接 * @throws Exception */ public void testAnchor()throws Exception{ final WebClient webClient = new WebClient(); // 获取测试首页 final HtmlPage page = (HtmlPage) webClient.getPage("http://127.0.0.1:8080/SecurityCenter/index.jsp"); // 或取一个<a>的超链接 HtmlAnchor anchor =page.getAnchorByName("lianjie"); //执行超链接的单击事件 final HtmlPage page2=anchor.click(); //打印成功返回后的页面 HtmlPage对象,就是包装了页面Html的一个对象,可以通过page.getWebResponse(). getContentAsString()直接返回页面的html代码 String pageContent = page2.getWebResponse().getContentAsString(); System.out.println("返回的页面:"+pageContent); //获得返回页面隐藏控件 final HtmlHiddenInput hHiddenInput=page2.getHtmlElementById("msg"); //打印控件的值 System.out.println("msg:"+hHiddenInput.getValueAttribute()); } }

HtmlUnit基础相关推荐

  1. HtmlUnit使用体会

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

  2. 第三十六期:学 Java 网络爬虫,需要哪些基础知识?

    说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...

  3. HtmlUnit入门教程

    作者:吴香礼 Email:wxl901018@163.com QQ:1060394242 本文禁止用于商业用途 1.     简介 htmlunit是一款开源的java页面分析工具,读取页面后,可以有 ...

  4. 【转】HtmlUnit入门教程

    转载出处:http://blog.csdn.net/wxl901018/article/details/44133873 1. 简介 htmlunit是一款开源的Java页面分析工具,读取页面后,可以 ...

  5. 学 Java 网络爬虫,需要哪些基础知识?

    说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...

  6. 软件测试的完整案例分析,清华大学出版社-图书详情-《软件测试基础与测试案例分析》...

    随着计算机系统规模和复杂性的急剧增加,计算机软硬件出现故障和系统失效的可能性也在增加.为保证计算机软件的质量,软件测试正日益受到IT业的重视.软件测试一般是指在规定的条件下,对计算机软件进行测试,发现 ...

  7. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  8. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作

    上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...

  9. java mybatis基础

    java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...

最新文章

  1. 汤家凤高等数学基础手写笔记-一元微分学的应用
  2. php中cookie的工作原理,cookie工作原理_PHP教程
  3. 20145209刘一阳《JAVA程序设计》第七周课堂测试
  4. 《Java程序员,上班那点事儿》 - 书摘精要
  5. linux进程退出所有tcp数据才发送,深入理解Node.js 进程与线程(8000长文彻底搞懂)...
  6. 从统计显著性到显著性统计
  7. 【HackerRank】Cut the tree
  8. 度盘高速下载器,比超级VIP还要快,推荐给大家
  9. arcgis字段计算器python_ArcGIS字段计算器(Python篇)——字段查重等问题汇总
  10. 【原创】惠普 CQ35-222TX 笔记本电脑安装东皇 v3.2 Mac OS 详解
  11. 3DMAX卸载/完美解决安装失败/如何彻底卸载清除干净3DMAX各种残留注册表和文件的方法...
  12. Stack的三种含义
  13. 万洲金业:日内黄金价格下跌,关注千八支撑反弹。
  14. PTA 7-178 吸血鬼素数
  15. 苹果手机浏览器$(document).on(click,function(){})点击无效的问题(转)
  16. OTFS-SCMA学习笔记
  17. 软考知识点---20标准化与法律法规
  18. js - JavaScript
  19. 【面试技巧】如何正确的回答“你最大的优点和缺点是什么”?
  20. 将win10的电脑恢复出厂设置以及后续问题处理

热门文章

  1. 2201: 逆置线性表(线性表)
  2. 腾讯全球数字生态大会--散记
  3. 论文修改建议 (JiangXY 20211108 突出自己的优势指标)
  4. 小程序上传文件demo
  5. 洛谷1456 Monkey King
  6. 003_JS实现图片轮播与点击播放
  7. GBASE斩获2022科技赋能金融业数字化转型突出贡献奖
  8. Graph控件绘制图形从左往右显示方法,默认是从右往左
  9. 用户openId 和 unionId 的区别
  10. [移动] Mosquitto简要教程(安装/使用/测试)