selenium webdriver的各种driver
来源:互联网 发布:linux tgz 解压 编辑:程序博客网 时间:2024/06/11 04:17
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)
from selenium import webdriverimport timedrivers = ['HtmlUnit', 'PhantomJS', 'Chrome', 'FF', 'IE'] dervers_time = {'HtmlUnit' : 0,'PhantomJS' : 0,'Chrome' : 0,'FF' : 0,'IE' : 0,}times = 50def 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============' % ifor driver in drivers:start = time.time() print starteval('run_with_%s()'%driver)end = time.time() print endelapse_time = end-startdervers_time[driver] += elapse_timeprint '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
- selenium webdriver的各种driver
- selenium webdriver的各种driver
- selenium webdriver的各种driver
- selenium webdriver的各种driver
- 【转载】selenium webdriver的各种driver
- selenium webdriver的各种driver效率比较
- selenium之三,各种driver
- Selenium webdriver2学习-1 webdriver各种浏览器
- Selenium webdriver的高级用法
- Selenium WebDriver的操作说明
- selenium及webdriver的原理
- selenium+webdriver的学习地址
- selenium及webdriver的原理
- selenium webdriver的断言介绍
- selenium webdriver重写的方法
- 关于Selenium WebDriver的geckodriver
- selenium WebDriver的简单使用
- Selenium下各浏览器driver的配置 火狐浏览器 System.setProperty("webdriver.firefox.bin","C:\\ProgramFiles\\MozillaFi
- Linux下的网络编程API基础
- Qt5设置背景图片
- selenium 定位截图
- 算法学习之素数环问题
- unable to bind to locking port 7054 within 45000 ms
- selenium webdriver的各种driver
- Selenium WebDriver
- MONGODB 权限认证
- ExtJs xtype一览
- 2.Java Networking--java网络:Socket
- Javascript笔记《四》之闭包
- Selenium WebDriver get ,getScreenshotAs(OutputType.FILE);
- java 线程池 超时中断
- 设计模式--观察者模式