文档章节

selenium webdriver的各种driver

xxjbs001
 xxjbs001
发布于 2015/04/06 18:40
字数 928
阅读 608
收藏 5
点赞 0
评论 0

selenium官方加上第三方宣布支持的驱动有很多种;除了PC端的浏览器之外,还支持iphone、android的driver;大概记录一下selenium支持的各种driver的用途与说明。

selenium可支持的PC浏览器驱动包括:

FF driver【包含在各自语言的客户端里】

safari driver【包含在selenium server中】

ie driver

chrome driver 【第三方】

opera driver【第三方】


selenium可支持的伪浏览器驱动:

PhantomJS Driver【第三方】

HtmlUnit Driver【包含在selenium server中】


selenium可支持的移动端驱动:

Windows Phone driver 【第三方】

Selendroid -Selenium for Android【第三方】

ios-driver 【第三方】

Appium  支持iphone、ipad、android、FirefoxOS【第三方】

上述的所有驱动不仅可以直接通过各自语言客户端来调用,还是注册到selenium grid中进行分布式的远程调用。


因为移动端的driver都没有尝试过,所以就不做说明。PC端的driver都是基于浏览器的,主要分为2种类型:

一种是真实的浏览器driver

比如:safari、ff都是以插件形式驱动浏览器本身的;ie、chrome都是通过二进制文件来驱动浏览器本身的;

这些driver都是直接启动并通过调用浏览器的底层接口来驱动浏览器的,因此具有最真实的用户场景模拟,主要用于进行web的兼容性测试使用。


一种是伪浏览器driver

selenium支持的伪浏览器包括htmlunit、PhantomJS;他们都不是真正的在浏览器、都没有GUI,而是具有支持html、js等解析能力的类浏览器程序;这些程序不会渲染出网页的显示内容,但是支持页面元素的查找、JS的执行等;由于不进行css及GUI渲染,所以运行效率上会比真实浏览器要快很多,主要用在功能性测试上面。

htmlunit是java实现的类浏览器程序,包含在selenium server中,无需驱动,直接实例化即可;其js的解析引擎是Rhino

PhantomJS是第三方的一个独立类浏览器应用,可以支持html、js、css等执行;其驱动是Ghost driver在1.9.3版本之后已经打包进了主程序中,因此只要下载一个主程序即可;其js的解析引擎是chrome 的V8。


driver类型 优点 缺点 应用
真实浏览器driver 真实模拟用户行为 效率、稳定性低 兼容性测试
HtmlUnit 速度快 js引擎不是主流的浏览器支持的 包含少量js的页面测试
PhantomJS 速度中等、模拟行为接近真实 不能模拟不同/特定浏览器的行为 非GUI的功能性测试

PS:除上述的几种真实浏览器driver中,也可以通过不同的手段来取消浏览器的css解析、界面渲染等目的;这样既可以保证浏览器的真实兼容性、也可以提高执行效率问题;使用的手段有:autoit、pyvirtualdisplay、浏览器设置等。


几种PC端driver的效率比较

from selenium import webdriver
import time

drivers = ['HtmlUnit', 'PhantomJS', 'Chrome', 'FF', 'IE'] 

dervers_time = {
	'HtmlUnit' : 0,
	'PhantomJS' : 0,
	'Chrome' : 0,
	'FF' : 0,
	'IE' : 0,
}
times = 50
def run_with_Chrome():
	common_step(webdriver.Chrome())

def run_with_FF():
	common_step(webdriver.Firefox())
	
def run_with_IE():
	common_step(webdriver.Ie())

def run_with_PhantomJS():
	common_step(webdriver.PhantomJS(executable_path=r'C:\Python27\Scripts\phantomjs.exe'))
	
def run_with_HtmlUnit():
	driver = webdriver.Remote("http://localhost:4444/wd/hub", 
								desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
	common_step(driver)
	
def common_step(driver):
	driver.get('http://www.baidu.com')
	ele = driver.find_element_by_id('su')
	print ele.get_attribute('value')
	driver.quit()

for i in range(times):
	print '=============Times %s============' % i
	for driver in drivers:
		start = time.time() 
		print start
		eval('run_with_%s()'%driver)
		end = time.time() 
		print end
		elapse_time = end-start
		dervers_time[driver] += elapse_time
		print 'elapse for %s:%s' % (driver, elapse_time)
	
for k,v in dervers_time.items():
	print 'avg elapse for %s in %s times:%s' % (k, times, v/times)
得出的结果:

最快的依次是htmlunit、PhantomJS、chrome、ie、ff


本文转载自:http://blog.csdn.net/five3/article/details/19085303

共有 人打赏支持
xxjbs001
粉丝 55
博文 749
码字总数 215621
作品 0
浦东
QA/测试工程师
selenium应用指南

selenium应用指南 1.安装selenium,以管理员身份运行cmd,输入以下命名 pip install selenium 2.下载chromedriver(),放到python.exe同级目录中 selenium设置请求头 selenium设置phantomjs请求头...

木木成洋
2017/11/05
0
0
聊聊Selenium不同webdriver的构造

序 本文主要讨论Selenium不同webdriver的构造 Selenium 2.0 Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也...

go4it
2017/11/05
0
0
selenium webdriver学习----对浏览器的简单操作

elenium webdriver对浏览器的简单操作 打开一个测试浏览器 对浏览器进行操作首先需要打开一个浏览器,接下来才能对浏览器进行操作。但要注意的是,因为Chrome Driver是Chromium 项目自己支持...

北_木
2016/01/12
51
0
if EC.alert_is_present: print("Alert exists") else: print("NO alert exists")什么情况下会走else语句,没有弹出alert为啥没走else

from selenium import webdriver import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium......

dingzhou_duyb
2016/02/03
325
1
selenium 模拟Firefox

官方文档 安装 示例 说明原文 远程模拟 服务端启动 selenium.webdriver 实例方法

kid_d
2015/09/16
121
0
selenium webdriver (python)大全

webdriver的简介 硒2.0的主要新功能是集成的webdriver的API。webdriver的设计除了解决一些seleniumr-RC API的一些限制,与webdriver 的整合,将提供一个更简单,更简洁的编程接口。selenium ...

_周小董
2017/12/02
0
0
运维学python之爬虫工具篇(五)Selenium的用法

1 介绍 Selenium是一组不同的软件工具,每个工具都有不同的方法来支持自动化测试,Selenium支持多种语言开发,比如 Java、C、Python等。Selenium有两个版本,Selenium 2 (也叫Selenium WebDri...

578384
2017/12/28
0
0
WebDriver总结-不同浏览器的启动方式

启动Firefox Browser。 1这种情况适用于Firefox安装在了默认路径下 WebDriver driver = new FirefoxDriver();//直接new一个FirefoxDriver Navigation navigation = driver.navigate(); // 进......

honzhang
2016/04/27
0
0
Selenium 1.0 vs Selenium 2.0 (Selenium Web-driver)

Selenium is browser automation tool, for more information select thislink. We already have Selenium1.0, why Selenium2.0? Selenium1.0 can't tackle following items. 1. Native keyb......

李长春
2011/07/12
0
0
使用WebDriver遇到的那些坑

在做web项目的自动化端到端测试时主要使用的是Selenium?WebDriver来驱动浏览器。Selenium WebDriver的优点是支持的语言多,支持的浏览器多。主流的浏览器Chrome、Firefox、IE等都支持,手机上...

糖糖豆豆
2014/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 配置时间和日期格式

你可以修改你 Confluence 为用户显示的时期和时间格式。设置的句法使用的是 SimpleDateFormat class,请参考 Java SimpleDateFormat 文档中的内容来设置日期和时间格式。 有下面 3 个时间和日...

honeymose
7分钟前
0
0
php seralize unserialize

关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改...

yeahlife
13分钟前
0
0
七、JSP九大内置对象和四个作用域

九大内置对象: request:类型是HttpServletRequest,和Servlet里的HttpServletRequest一模一样。 response:类型是HttpServletResponse,和Servlet里的HttpServletResponse一模一样。JSP里基...

Wakeeee_
16分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
48分钟前
0
0
双向认证-nginx

1、设置容器 docker run -it --name nginx-test2 -v /home/nginx:/apps -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8183:80 -p 7443:443 -d nginx:stable 2、修改nginx配......

hotsmile
49分钟前
0
0
深入了解 Java 自动内存管理机制及性能优化

一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《Java虚拟机规范(Java SE 7 版)》的规...

Java大蜗牛
51分钟前
4
0
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于springboot的综合开发的知识点。由于SpringBoot本身是基于Spring和SpringMvc...

oKong
51分钟前
9
0
云数据库架构演进与实践

如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求。 微服务,也就是一种面向服务的,有特定边界的松...

巨杉数据库
53分钟前
0
0
Linux系统梳理---系统搭建(一):jdk卸载与安装

1.去官网下载符合Linux版本的jdk,暂用jdk-8u171-linux-x64.rpm 2.登陆Linux,进入usr目录,创建java目录(方便管理,可以其他位置):mkdir java 3.上传下载的jdk包至Linux服务器,使用rz指令(sz f...

勤奋的蚂蚁
今天
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

六库科技
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部