HtmlUnit初步使用心得-程序员宅基地

技术标签: java  浏览器  测试  测试工具  

HtmlUnit初步使用心得

一、介绍

HtmlUnit是一款开源的java 页面分析工具,读取页面后,可以有效的使用HtmlUnit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。(百度百科

这玩意本来是用来做网页自动化测试的,不过后来似乎多用在爬虫项目。因为没有界面,所以运行速度可以。但是同样因为没有界面,我怎么知道运行结果怎么样,如果只有html还能勉强看看,要是用了JS什么的就直接抓瞎了。所以在试用了一番后我还是打算转投其他工具。

二、安装

安装还是比较方便的,先从官网下载最新的版本(我当时最新的是2.18)。解压后有两个文件夹,一个里面有API的DOC,一个里面有所有需要的库,把整个文件夹的东西都拉进工程里就可以开始使用了。

三、使用

贴个基本使用

    // 创建webclient
     WebClient webClient = new WebClient(BrowserVersion.CHROME);

    // 获取搜索输入框并提交搜索内容
    HtmlPage page1 = (HtmlPage)
webClient.getPage("http://www.baidu.com/");
    HtmlInput input = (HtmlInput) page1.getHtmlElementById("kw");
    System.out.println(input.toString());
    input.setValueAttribute("HtmlUnit");
    System.out.println(input.toString());

    // 获取搜索按钮并点击
    HtmlInput btnSearch = (HtmlInput) page1.getHtmlElementById("su");
    HtmlPage page2 = btnSearch .click();

    // 输出新页面的文本
    System.out.println(page2.asXml());

简单解释下,首先创建个浏览器实例,可以模拟的浏览器有IE、FIREFOX和CHROME,输入URL获得页面,通过id找到页面上的各种元素,或者通过setValueAttribute模拟填写,或者通过click等模拟点击动作,最后可以通过asXml或者asText输出页面以检查结果。

基本上就是这么个东西,其他具体可以参考API。如果以后有机会使用的话会继续补充。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/XaverSun/article/details/48368469

智能推荐

第16题: es6代码转es5代码的实现思路是什么?_es6 代码转成 es5 代码的实现思路是什么-程序员宅基地

题目es6代码转es5代码的实现思路是什么?解释谈到es6代码转es5代码肯定想到的是babel,那么babel是如何实现转码的呢?解析(parse): 解析代码字符串,生成AST(抽象语法树)转换(transform):按一定的规则转换,修改AST生成(generate):将修改后的AST生成新的普通代码es6代码转es5代码就是这三个步骤。其中最关键的是AST(抽象语法树)..._es6 代码转成 es5 代码的实现思路是什么

IOS15瀑布流的使用_JohnsonSwift的博客-程序员宅基地

IOS15瀑布流的使用项目设计的东西较多,自己拿去研究一下吧https://gitee.com/johnson__save_admin/water-flow-layout-demo

Asp.net中Frameset的使用小结 -程序员宅基地

1.引用别人经典(语法)排版标记  ■ 框架概念 : 所谓框架便是网页画面分成几个框窗,同时取得多个 URL。只 要 即可,而所有框

centos7安装配置Tengine并配置系统服务加入开机启动项_centos7安装tengine_路人万的博客-程序员宅基地

1.下载tenginx安装包本例为tengine-2.1.0.tar.gz,地址为http://tengine.taobao.org/2.使用rz命令上传tenginx到centos73.解压tenginx 可以使用 tar -zxvf tengine-2.1.0.tar.gz(有过程) 也可以用 tar xf tengine-2.1.0.tar.gz(无过程)4.移动文件夹到你想要移动到的位置 mv tenginx-2.1.0 /opt/5.用yum源安装依赖gcc openssl-devel p_centos7安装tengine

freebsd 安装 mysql_freebsd安装mysql8.0-程序员宅基地

1. freebsd 这个系统说实话 真的没有ubuntu 方便 ,要安装个软件, apt-get install 下就可以了,而在freebsd 下面只能在ports 下去装,但通常情况下总是没资源,坑啊所以只能自己 下包,自己装了 1. 首先下 mysql-5.1.70.tar.gztar -zxvf mysql-5.1.70.tar.gzcd mysql-_freebsd安装mysql8.0

Windows 7 RC 下Chrome崩溃解决办法_win7系统谷歌浏览器导出密码就蹦-程序员宅基地

装上Windows 7 RC之后还没来的急装Chrome,今天尝试了一下。安装很顺利但是没想到运行一会之后(大概15分钟)突然弹出了一个提示说浏览器崩溃是否提交问题并重启。点确定重启之后有死掉了。重复几次之后发现浏览器怎么也打不开了。 Google一把,终于被我找到了。貌似是因为插件的问题造成的。打开浏览器的快捷方式的属性窗口,在原有的目标项后增加一个参数: --in-proce_win7系统谷歌浏览器导出密码就蹦

随便推点

传统流程图(用于设计分析算法)-程序员宅基地

流程图是每一个程序编制人员都应当熟练掌握的!只要规定好三种基本结构的流程图的画法,就可以画出任何算法的流程图!三种基本结构:1.顺序结构: 顺序结构是最简单的一种线性结构。 执行顺序: 执行完A后必定会执行B。2.选择结构: 此结构中必包含一个判断框!根据给定的条件是否成立而选择执行A框或者B框!..._画出使用传统流程国计算nl算法的流程国

经典动态规划:最长公共子序列_经典动态规划:最长公共子序列-程序员宅基地

问题给定两个字符,求两个字符串的最长公共子序列(不需要连续,只需要保持字符的相对位置)动态规划详解题解/** * @author IT00ZYQ * @date 2021/4/10 22:57 **/public class 最长公共子序列 { public static int way1(String str1, String str2) { if (str1 == null || str2 == null || str1.length() == 0 || _经典动态规划:最长公共子序列

JUC下面的api实现原理_juc的api原理_一只勤奋的小猪的博客-程序员宅基地

##JUC包下类ReentrantLock-ReentrantReadWriteLock-CountDownLatch-LinkedBlockingQueue-Synchronized_juc的api原理

NG-ZORRO组件table中checkbox的indeterminate属性-程序员宅基地

在多选表格中表头的选择框会有indeterminate属性,如NG-ZORRO中的table组件以下是官网源码,我将其分为html部分和逻辑控制部分。 <nz-table #rowSelectionTable [nzData]="data" (nzCurrentPageDataChange)="currentPageDataChange($event)" (nzPageIndexChange)="refreshStatus()" .

发福利:整理了一份关于“资源汇总”的汇总-程序员宅基地

觉得有用的话,可以去github关注:https://github.com/justjavac/awesome-awesomeness-zh_CN一份关于“资料汇总”的汇总。通用free-programming-books-zh_CN 免费的计算机编程类中文书籍精彩博客集合 hacke2/hacke2.github.io#2ResumeSample 程序员简

输出信息log4j.properties的作用与使用方法-程序员宅基地

最近应用开发的进程中出现了一个小问题,顺便记录一下原因和方法--输出信息 一、log4j.properties 用作 Log4j是Apache的一个开放源码代项目,通过应用Log4j,我们可以控制日记信息运送的目的地是控制台、文件、GUI件组、甚至是套接口服务器、NT的事件记录器、UNIXSyslog护守程进等;我们也可以控制每一条日记的输出格式;通过定义每一条日记信...