首页 > 其他分享 >selenium webdriver的各种driver

selenium webdriver的各种driver

时间:2022-12-20 11:07:13浏览次数:71  
标签:webdriver 浏览器 PhantomJS selenium driver time


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)

得出的结果:

selenium webdriver的各种driver_chrome

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


标签:webdriver,浏览器,PhantomJS,selenium,driver,time
From: https://blog.51cto.com/u_15918230/5954442

相关文章

  • selenium之relative_locator相对定位
    relative_locator 是4.0后增加的一种定位方式(2021.10.13)相对定位提供了上下左右附近五种位置定位的方式工作中慎用!!!relative.pyfromseleniumimportwebdriverf......
  • selenium借助AutoIt识别上传(下载)详解
    AutoIt目前最新是v3版本,这是一个使用类似BASIC​​脚本语言​​​的​​免费软件​​​,它设计用于Windows GUI(​​图形用户界面​​)中进行自动化操作。它利用模拟键盘......
  • selenium不同浏览器处理证书(SSL Certificate)的方法
    在线英文版​​webdriverAPI ​​​​https://www.w3.org/TR/webdriver/#proxy ​​1.Firefox创建一个新的profile,命名为certificateIssue 用刚才创建的profile打开ffx浏......
  • Selenium学习资料大全
    关于selenium的好的学习资料:官方UserGuide: ​​http://seleniumhq.org/docs/​​官方API: ​​http://selenium.googlecode.com/git/docs/api/java/in......
  • selenium webdriver三种浏览器如何处理不受信任的证书
    Hello,Welcometo ​​Seleniumtutorial​​ inthispostwewillseehowto HandleUntrustedCertificateSelenium. WhatisUntrustedSSLcertificate? Whene......
  • selenium chrome浏览器启动设置,加载浏览器相关插件设置方法。
     1、加载插件:1publicstaticvoidStartChromeLoadPlugin(){2System.out.println("startfirefoxbrowser...");3System.setProperty("webdriver......
  • JDBC之Driver和DriverMananger
    JDBC之Driver和DriverMananger目录JDBC之Driver和DriverManangerJava和MySQL的关系JDBC演变过程驱动加载入内存的过程Oracle加载驱动的静态方法MySQL加载驱动的静态方法Dr......
  • Selenium21--验证码测试
    验证码简介有些网站需要验证码通过后方可进入网页,目的很简单,就是区分是自然人访问还是计算机程序访问。验证码:简称为captcha一种随机生成的信息(数字、字母、汉字、......
  • Selenium20--截图操作
    为什么要截屏截屏:就是把当前屏幕上浏览器窗口内的网页或某个特定的网页区域截图保存为图片的过程为什么要截屏?简单地说,主要是为了保留证据。截图帮助我们了解应用的......
  • Selenium19-下拉列表操作
    下拉列表HTML里的下拉列表表示方式,一般来说分为两种情况传统下拉列表:标准的select标签下拉列表表示方式,下级是optio组装下拉列表:非select标记,比如li、div、input、i......