Selenium webdriver的各种driver

selenium官方加上第三方宣布支持的驱动有很多种;除了PC端的浏览器之外,还支持iphoneandroid的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

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-03 18:10:51

Selenium webdriver的各种driver的相关文章

Selenium Webdriver系列教程(1)—快速开始

Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1.x却还是多数人坚定的选择,究其原因不过是1.x时代遗留下了大量的文档,代码,教程让人们误以为1.x还是这个年代的主流,还应该光鲜亮丽在前台演出属于它的美好.长江后浪推前浪,最为前浪的selenium 1.x的宿命应该是死在沙滩上. 好了,直入主题,由于开源社区不再维护selenium 1.x再加之更

总结Selenium WebDriver中一些鼠标和键盘事件的使用

在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是 Actions 类,在使用该类的过程中会配合使用到 Keys 枚举以及 Mouse. Keyboard.CompositeAction 等类. 其次,在实际测试过程中,可能会遇到某些按键没办法使用 Actions.Keys 等类来

译:selenium webdriver (python)

如果翻译的很烂,原文档地址: http://docs.seleniumhq.org/docs/03_webdriver.jsp#firefox-driver       selenium webdriver 注: 我们不断的更新这份文档,使这份文档更加正确和完善:这份文档相对来讲也是比较准确的.   webdriver的简介 硒2.0的主要新功能 是集成的webdriver的API.webdriver的设计除了解决一些seleniumr-RC API的一些限制,与webdriver 的整 合,将

selenium webdriver (python) 第一版PDF

前言       如果你是一位有python语言基础的同学,又想通过python+ selenium去实施自动化,那么你非常幸运的找到了这份文档,我也非常荣幸能为你的自动化学习之路带来一丝帮助. 其实,我在selenium自动化方面也是初学者,虽然在刚开始从事测试工作的就尝试学习selenium自动化工具,购买了面<零成本实现web自动化测试---基于seleinum与Bromine>学了一段时间不得门,当时水平有限,甚至一直都不理解什么自动化测试框架,后来就放弃了自动化的学习. 今年换工作后

Selenium Webdriver系列教程(2)—浏览器的简单操作

上一讲我们介绍了如何部署selenium 2.0的开发环境,这一讲我们将介绍如何使用selenium提供给我们的接口进行浏览器的简单操作. 本文将先介绍适合初级用户的一些常用方法,然后将对一些高级用法和实现源码进行稍微深入一些的分析. 如何打开一个测试浏览器 做自动化测试一般情况下我们都需要首先打开测试浏览器,浏览器开启后我们方可"命令"浏览器去打开新页面,点击特定的链接,判断具体的逻辑等等.因此该操作为"万里长征的第一步",必须给以重视.具体代码如下.需要注意的是

selenium webdriver测试问题

问题描述 selenium webdriver测试问题 想测试网页元素:http://www.indeed.ca/cmp/Family-Futures-Resource-Network/jobs/Family-Enrichment-Worker-3396e3ab27d0f1d4?sjdu=vQIlM60yK_PwYat7ToXhk8zp-Ak3kDWvkMS3L0Xyb01JfHXPO97qnuWgnEA72HSmJKa9WargHenL42bqgqZ_Hv0HB1mLXN5mVeoFrhMf1

基于Selenium WebDriver实现多语言环境下自动化截图

TVT 的概念和 TVT 自动化的必要性 概念 翻译验证测试 (Translation Verification Testing,TVT) 是 IBM GSSC 部门为 IBM 的各种产品做本地化 (Localization) 的一个测试环节.众所周知,我们开发出一款产品,需要让全 球各地的用户都能够无障碍的使用,就必须精准的将产品 UI 和相关文档翻译成各种语言,这样不同国家和地区的用户才能 够顺畅使用.TVT 的过程就是一个产品翻译验证测试的过程. 必要性 从字面上看,TVT 是一个比较简单

用Selenium WebDriver+Grid2实现浏览器端性能测试

在 Web 2.0 应用中,页面装载时间和浏览器渲染时间将成为决定性能的关键因素.我们在测试过程中不仅需要手动触发性能测试工具,而且需要模仿不同的用户行为,包括不同的浏览器.不同的网络条件和不同的使用习惯.在这种情况下我们需要新的方法与工具来覆盖特别是浏览器端的性能测试.用 Selenium WebDriver + Grid2 可以解决浏览器端性能测试中的自动化和并发性问题.本文介绍了这种新的测试框架和脚本的开发过程,并结合案例给出了具体的代码和结果分析.使用 Selenium WebDrive

Selenium webdriver系列教程(7)—如何处理alert和confirm

以前使用watir 1.6x 的时候处理页面javascript弹出的alert和confrim窗口时必须借助autoit工具来辅助执行,就像中国男足职业联赛中高价聘请外援一般. 在selenium webdriver中,confirm和alert的处理再也不需要借助任何第三方工具了. 下面的html页面上有1个名为click的button,点击该button后就会弹出1个alert窗口. <html> <head> <title>Alert</title>