0
点赞
收藏
分享

微信扫一扫

WebDriver 驱动

_LEON_ 2024-05-18 阅读 20

到目前为止,我们用到的浏览器驱动有 Friefox(Selenium 集成) 、 Chrome(chromedriver) 以及 IE

(IEDriverServer)等, 除此 WebDriver 还支持脚本在其它驱动下运行。

WebDriver 所支持的驱动:

驱动 说明

Firefox Driver 包含在各语言的 selenium(WebDriver) 包里, 这也是为什么安装完 selenium

就可以直接使用 firefox 启动脚本的原因。

Chrome Driver 需要下载 chromedriver ,因为 webdriver 原本是谷歌的项目,之后与

selenium 合并,所以对 chrome 的支持也非常好。

IE Driver 需要下载 IEDriverServer 。

Opera Driver OperaDriver 是 WebDriver 厂商 Opera Software 和志愿者开发了对于 Opera

的 WebDriver 实现。

HtmlUnit Driver HtmlUnit 回文档模拟成 HTML, 从而模拟浏览器的运行, 但又非真正的去启

动一款浏览器去执行脚本。 Selenium Server 中已经包含了 HtmlUnit。

PhantomJS Driver PhantomJS 是一个拥有 JavaScript API 的无界面 WebKit , 和 HtmlUnit

类似,可以被看作一个款无界面的浏览器。

Appium Appium 可以被看作移动端的 Selenium ,它同样支持多平台(iOS、 Android

及 FirefoxOS ) 的 app 及移动端 web 的自动化测试

HtmlUnit 是一个“GUI-Less browser for Java programs”。该模型的 HTML 文件,并提供了一个 API,

允许您调用页面,填写表格,点击链接等...... 就像你在“正常”的浏览器做的。它具有相当不错的

JavaScript 的支持(这是不断提高),即使有相当复杂的 Ajax 库的工作,无论是模拟 Firefox 或 IE 浏览器都可以根据你的需要进行配置。因为 Selenium Server 中已经包含了 HtmlUnit,所以我们可以直接

使用它进进行测试。

htmlunit.py

#coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

from time import ctime

#通过 htmlunit 执行脚本

print ctime() #打印脚本运行开始时间

driver = webdriver.Remote(

command_executor=' http://127.0.0.1:4444/wd/hub',

desired_capabilities={'platform': 'ANY',

'browserName': 'htmlunit',

'version': '',

'javascriptEnabled': True

})

driver.get("http://www.baidu.com")

print 'open baidu'

driver.find_element_by_id("kw").send_keys("hello")

driver.find_element_by_id("su").click()

print 'search completed'

driver.close()

print ctime() #打印脚本运行结束时间

运行脚本之前需要先启动 Selenium Server, 脚本运行结果如下:

Python Shell

>>> ================================ RESTART ================================

>>>

Sat Feb 14 17:19:20 2015

open baidu

search completed

Sat Feb 14 17:19:27 2015

从执行时间上看要快于运行在真实浏览器下执行脚本,这也是使用 HtmlUnit 驱动的优点,可以加快

测试用例的运行时间。

PhantomJS

PhantomJS 是一个拥有 JavaScript API 的无界面 WebKit。正如你所知道的,Webkit 是 Chrome、Safari

和其他一些小众浏览器使用的布局引擎。因此,PhantomJS 是一个浏览器,而且是一个无界面的浏览器。

这意味着,渲染后的网页实际上绝不会显示。这对你来说可能不可思议,所以你可以把它作为一个可编程

的浏览器终端。

在使 PhantomJS 之前,需要先下载。PhantomJS 支持 Windwos、MAC、Linux 等平台,我们可以根据

自己的环境选择相应的版本进行下载。

下载完成解压会得 phantomjs-2.0.0-windows 目录,在 bin 目录会看到 phantomjs.exe 程序,将当前

目录添加到系统环境变量 path 下。(或直接将 phantomjs.exe 丢到 Python 的安装目录下,因为我们最

开始已将 Python 添加到了系统环境变量的 path 下)。

下面就可以使用 phantomjs 驱动进行测试了。

phantomjs.py

#coding=utf-8

from selenium import webdriver

from time import ctime

print ctime()

#指定 phantomjs 驱动

driver = webdriver.PhantomJS(executable_path='C:\\Python27\\phantomjs')

driver.get("http://www.baidu.com")

driver.find_element_by_id('kw').send_keys('PhantomJS')

driver.find_element_by_id('su').click()

print 'Search completed!'

driver.quit()

print ctime()

executable_path 用于指定 phantomjs.exe 的路径。

脚本运行结果如下:

Python Shell

>>> ================================ RESTART ================================

>>>

Sat Feb 14 19:23:09 2015

Search completed!

Sat Feb 14 19:23:26 2015

当然,为了方便驱动的参化,参考 htmlunit.py 脚本,将 brawserName 的参数替换为“phantomjs”

就使用 PhantomJS 运行测试脚本。

从脚本的执行时间上看和 HtmlUnit 旗鼓相当。

下面将真实的浏览器驱动和 HtmlUnit 以及 PhantomJS 做个简单的对比。

驱动类型 优点 缺点 应用

真实的浏览器驱动 真实模拟用户行为 运行效率、稳定性低 兼容性测试

HtmlUnit 运行速度快 js 引擎不是主流的浏览

器支持

包含少量 js 的页面测

PhantomJS 运行速度快、 模拟行为

接近真实浏览器

不能模拟特定浏览器的

行为

非 GUI 的功能性测试

小结:

本章重点介绍了 Selenium Grid 的原理,因为其被集成到了 Selenium Server 中,所以我们以 Selenium

Server 为载体进行使用。通过实例介绍如何通过 Selenium Grid 完成分布式测试,最后介绍了 HtmlUnit

和 PhantomJS 两个特别的驱动来运行脚本。


举报

相关推荐

0 条评论