Selenium webdriver的各种driver

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

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/

相关文章
|
4月前
|
数据采集 测试技术
Selenium与WebDriver:Errno 8 Exec格式错误的多种解决方案
本文讨论了在使用Selenium和WebDriver自动化测试时常见的执行格式错误(Errno 8 Exec format error)问题。错误通常发生在运行ChromeDriver时,与兼容性或路径配置有关。文章提供了多种解决方案,包括手动更改路径、更新或重新安装webdriver-manager包、下载特定版本的ChromeDriver、修改driver_cache.py文件。此外,还介绍了如何结合代理IP技术使用Selenium进行网页抓取,以提高效率和成功率。示例代码展示了如何配置代理IP并使用Selenium访问网站。通过这些方法,用户可以有效解决执行格式错误,并提高网页自动化测试
468 1
Selenium与WebDriver:Errno 8 Exec格式错误的多种解决方案
|
13天前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
|
5月前
|
前端开发 测试技术 UED
使用Selenium WebDriver模拟用户操作防止滑动条验证
在进行Web自动化测试时,经常会遇到各种前端验证机制,如滑动条验证,这些机制设计用来防止自动化脚本模拟用户行为。在本文中,我们将探讨如何使用Selenium WebDriver来模拟用户操作,以规避这些验证机制。
|
2月前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
257 6
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
2月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
2月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
3月前
|
数据采集 Python
如何用Python Selenium和WebDriver抓取LinkedIn数据并保存登录状态
本文介绍了使用Python Selenium和WebDriver库抓取LinkedIn数据的方法。首先,安装Selenium库和对应的WebDriver,然后配置爬虫代理IP以避免频繁请求被检测。接下来,设置user-agent和cookies以模拟真实用户行为,实现登录并保持状态。登录后,使用WebDriver抓取目标页面数据,如用户名、年龄、性别和简历信息。最后,强调了优化代码、处理异常和遵守使用条款的重要性,以提高效率并避免账号被封禁。
如何用Python Selenium和WebDriver抓取LinkedIn数据并保存登录状态
|
3月前
|
JavaScript 测试技术 API
|
3月前
|
XML Java 测试技术
Selenium WebDriver自动化测试(基础篇):不得不掌握的Java基础
关于Selenium WebDriver自动化测试的Java基础篇,涵盖了Java的变量、数据类型、字符串操作、运算符、流程控制、面向对象编程、关键字用法、权限修饰符、异常处理和IO流等基础知识点,为进行自动化测试提供了必要的Java语言基础。
95 1
|
3月前
|
Web App开发 前端开发
Selenium WebDriver
【8月更文挑战第9天】
49 7