SELENIUM2支持无界面操作(HTMLUNIT和PHANTOMJS)

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并行测试)

【转载】SELENIUM2支持无界面操作(HTMLUNIT和PHANTOMJS)的更多相关文章

  1. selenium2支持无界面操作(HtmlUnit和PhantomJs)

    selenium2支持无界面操作(HtmlUnit和PhantomJs) selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaD ...

  2. Robot Framework使用Phantomjs进行无界面UI自动化测试

    Robot Framework 是一款关键字驱动的验收自动化测试框架,现在在国内使用的越来越广泛了.一种通用的Web UI自动化测试解决方案是Robot Framework+Selenium2Libr ...

  3. Chrome开启无界面浏览模式Python+Windows环境

    环境:Python 3.5.x + Selenium 3.4.3 + Chromedriver 2.30 + Chrome 60 beta版 + WIN7/WIN10 chrome_options = ...

  4. selenium phantomjs java无界面浏览器环境搭建

    java selenium搭建无界面浏览器 1.http://phantomjs.org/ 下载windows版phantomjs 2.解压后bin目录下会有exe文件 3.测试代码: package ...

  5. Chrome handless无界面浏览器的脚本操作

    1.什么是Phantomjs (已经停止更新) 是一个无界面的浏览器 支持页面元素查找,js的执行等 由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多 2.如何使用Phantomjs? ...

  6. javascript - 可编辑表格控件 支持全键盘操作(无JS框架)

    项目中经常会用到表格编辑控件,网上也有不少,但是确实没有完全符合我要求的, 自己写一个吧! 1.该控件支持 数据显示列,文本编辑列,选择列,下拉列,索引列,删除列 六种列类型 2.支持全键盘操作,自定 ...

  7. 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务

    windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...

  8. selenium(六)Headless Chrome/Firefox--PhantomJS停止支持后,使用无界面模式。

    简介: 以前都用PhantomJS来进行无界面模式的自动化测试,或者爬取某些动态页面. 但是最近selenium更新以后,'Selenium support for PhantomJS has bee ...

  9. github之无命令可视化界面操作——GitHub DeskTop

    Git是Linuxs之父Lunus用C语言写的一个非常好用的分布式版本控制系统. GitHub可以给我们提供免费的代码仓库,并用Git可以在上面提交代码并进行版本控制.使用Git一般要安装Git ,并 ...

随机推荐

  1. springmvc 参数解析绑定原理

    handlerMethodArgumentResolver:方法参数解析器接口,这个接口是springmvc参数解析绑定的核心接口.不同的参数类型绑定都是通过实行这个接口来实现.也可以通过实现这个接口 ...

  2. spring使用注解的方式创建bean ,将组件加入容器中

    第一种使用@Bean的方式 1.创建一个bean package com.springbean; public class Person { private String name; private ...

  3. 【leetcode算法-简单】20. 有效的括号

    [题目描述] 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字 ...

  4. 【转帖】sysbench压力测试工具简介

    sysbench压力测试工具简介 https://www.cnblogs.com/pdlife/p/6698957.html 一.sysbench压力测试工具简介: sysbench是一个开源的.模块 ...

  5. 在Ubuntu中搭建Python3的虚拟环境并开始django项目

    搭建环境: 1.首先安装virtualenv: pip install virtualenv 2.创建虚拟环境:(指定安装Python3,若不写-p python3,默认安装Python2.7),en ...

  6. Java:集合类的数据结构

    本文源自参考<Think in Java>,多篇博文以及阅读源码的总结 前言 Java的集合其实就是各种基本的数据结构(栈,队列,hash表等),基于业务需求进而演变出的Java特有的数据 ...

  7. shiro小记

    今天主要看了Shiro的认证,授权功能初步了解了一下,其他的功能用的不多,之后再看. 先说一下Shiro的三个核心概念: 1.Subject: 代表当前正在执行操作的用户,但Subject代表的可以是 ...

  8. Web Server 分布式服务: Nginx负载均衡

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用.其 ...

  9. 第一章 MIZ701 VIVADO 搭建SOC最小系统HelloWorld

      本章内容是MIZ701中的第五章,本来也是要过渡一下FPGA部分的,但是由于MIZ701没有单独提供PL部分的晶振时钟,时钟必须通过PS产生,所以本章内容作为Miz701的第一章内容.本章的目的是 ...

  10. k8s-日志收集架构

    日志收集 Kubernetes 集群中监控系统的搭建,除了对集群的监控报警之外,还有一项运维工作是非常重要的,那就是日志的收集. 介绍 应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我 ...