51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1708|回复: 0
打印 上一主题 下一主题

selenium webdriver的各种driver

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-14 16:00:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
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、pyvirtu
aldisplay、浏览器设置等。



几种PC端driver的效率比较:
  1. <p>
  2. </p><p>[python] view plain copy</p><p>from selenium import webdriver  </p><p>import time  </p><p>  </p><p>drivers = ['HtmlUnit', 'PhantomJS', 'Chrome', 'FF', 'IE']   </p><p>  </p><p>dervers_time = {  </p><p>    'HtmlUnit' : 0,  </p><p>    'PhantomJS' : 0,  </p><p>    'Chrome' : 0,  </p><p>    'FF' : 0,  </p><p>    'IE' : 0,  </p><p>}  </p><p>times = 50  </p><p>def run_with_Chrome():  </p><p>    common_step(webdriver.Chrome())  </p><p>  </p><p>def run_with_FF():  </p><p>    common_step(webdriver.Firefox())  </p><p>      </p><p>def run_with_IE():  </p><p>    common_step(webdriver.Ie())  </p><p>  </p><p>def run_with_PhantomJS():  </p><p>    common_step(webdriver.PhantomJS(executable_path=r'C:\Python27\Scripts\phantomjs.exe'))  </p><p>      </p><p>def run_with_HtmlUnit():  </p><p>    driver = webdriver.Remote("http://localhost:4444/wd/hub",   </p><p>                                desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)  </p><p>    common_step(driver)  </p><p>      </p><p>def common_step(driver):  </p><p>    driver.get('http://www.baidu.com')  </p><p>    ele = driver.find_element_by_id('su')  </p><p>    print ele.get_attribute('value')  </p><p>    driver.quit()  </p><p>  </p><p>for i in range(times):  </p><p>    print '=============Times %s============' % i  </p><p>    for driver in drivers:  </p><p>        start = time.time()   </p><p>        print start  </p><p>        eval('run_with_%s()'%driver)  </p><p>        end = time.time()   </p><p>        print end  </p><p>        elapse_time = end-start  </p><p>        dervers_time[driver] += elapse_time  </p><p>        print 'elapse for %s:%s' % (driver, elapse_time)  </p><p>      </p><p>for k,v in dervers_time.items():  </p><p>    print 'avg elapse for %s in %s times:%s' % (k, times, v/times)  </p>
复制代码

得出的结果:


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 09:00 , Processed in 0.066703 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表