selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试。

除此之外,selenium也是支持无界面浏览器操作的。比如说HtmlUnit和PhantomJs。他们都不是真正的浏览器,运行时不会渲染页面显示内容,但是支持页面元素查找,js的执行等;由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多。


1.htmlUnit是java实现的类浏览器程序,包含在selenium server中,无须驱动,直接实例化就行。

用法如下: WebDriver driver = new HtmlUnitDriver();// HtmlUnitDriver driver = new HtmlUnitDriver(true);//支持js(实际还是支持的不够好,因为htmlUnit使用的js引擎(Rhinojs)不是主流的浏览器支持的) 2.PhantomJS 是一个基于 WebKit(WebKit是一个开源的浏览器引擎,Chrome,Safari就是用的这个浏览器引擎) 的服务器端JavaScript API,主要应用场景是:无需浏览器的 Web 测试,页面访问自动化,屏幕捕获,网络监控 用法如下: PhantomJS driver = new PhantomJSDriver(); 3.为了看以上两个无界面浏览器是否适合当前项目组前端自动化,做了一些预研,结果如下:

行为描述

行为

HtmlUnitDriver

HtmlUnitDriver(true)

PhantomJSDriver

FirefoxDriver

文本框input

输入文本

yes

yes

yes

yes

按钮button

点击按钮

yes

yes

yes

yes







下拉列表select

选择选项

yes

yes

yes

yes

复选框checkbox

点击

yes

yes

yes

yes

Alert(显示带有一条指定消息和一个 OK 按钮的警告框)

点击

no

no

no

yes

Promprt(显示可提示用户进行输入的对话框)

点击

no

no

no

yes

最终的预研结果是这两者不适合我们的系统,因为我们的系统中有很多Alert,只能忍痛放弃 4.总结HtmlUnitDriver,PhantomJS与真实浏览器driver的优缺点比较


driver类型

优点

缺点

应用

真实浏览器driver

真实模拟用户行为

效率、稳定性低

浏览器兼容性测试

HtmlUnit

速度快

js引擎(Rhinojs)不是主流的浏览器支持的,故对js支持的不够好

包含少量js的页面测试

PhantomJS

速度中等、模拟行为接近真实

不能模拟不同/特定浏览器的行为

非GUI的功能性测试


总结:

如果你要测试的页面js不是很多,并且不需要做兼容性测试的话,HtmlUnitDriver无遗是最好的选择

如果你需要做兼容性测试的话,还是应该选择真实的浏览器driver(如果你想提高自动化运行速率,可以考虑用testng,selenium grid并行测试)