(六十一)Selenium Grid2之WebDriver驱动

随笔记录方便自己和同路人查阅。

 

#------------------------------------------------我是可耻的分割线-------------------------------------------

WebDriver驱动

在前几篇文章中,我们对WebDriver驱动的实现进行了简单分析,到目前为止,我们所熟悉的浏览器驱动有:Firefox DriverChrome DriverIEDriverServer等。除此之外,WedDriver还支持哪些平台及驱动呢?我们下面慢慢来看。

WedDriver所支持的平台/浏览器/模式如下表:

平台/浏览器/模式

驱动

说明

Android

 

支持脚本在Android WebView应用的测试,一般指移动端浏览器

BlackBerry

 

支持脚本在黑莓浏览器上运行

Firefox

包含在Selenium安装包中

包含在个语言的Selenium(WebDriver)包里,这也是为什么安装完Selenium后就可以直接使用Firefox浏览器运行脚本的原因

Chrome

Chromedriver.exe

因为WebDriver原本为谷歌的项目,之后与Selenium项目合并,所以对Chrome浏览器的支持也非常好

IE

IEDriverServer.exe

需要下载驱动支持,用于驱动脚本在IE系列的浏览器下运行

Edge

MicrosoftWebDriver.exe

支持脚本在Windows10操作系统Edge浏览器下执行

Opera

Operadriver.exe

关于Opera浏览器的前世今生比较复杂,总之,现在的OperaChromiumDriver(原OperaDriver)基于ChromeDriver

Safari

包含在Selenium Server

Safari浏览器由苹果公司开发,最早运行于苹果自家MAC平台,目前也提供Windows版本

HtmlUnit

包含在Selenium Server

HtmlUnit将请求返回文档模拟成HTML,从而模拟浏览器的运行,但又非真正地启动一款浏览器执行脚本

PhantomJS

phantomjs.exe

PhantomJS是一个拥有JavaScript API的无界面WebKit,和HtmlUnit类似,可以看作是一款无界面的浏览器

1.  支持平台

WebDriver支持AndroidBlackBerry两个移动平台的浏览器测试,至于支持性如何,笔者并没有做过测试。Android目前为市场占有率第一的移动平台,对于在其上面进行自动化测试,笔者推荐AppiumAppium扩展了WebDriver的协议,支持IOS平台和Android平台上的原生应用、Web应用和混合应用等。

BlackBerry平台目前的时长占有率很小,国内时长就更少了。

2.  支持浏览器

WebDriver目前所支持的浏览器包括:FirefoxChromeIEEdgeOperaSafari

为什么会选择上面几款浏览器进行支持呢?主要与浏览器的内核有关。

3.  支持模式

HtmlUnitPhantomJS是两个比较特殊的模式,我们可以把它们看作是伪浏览器,在这种模式下支持htmlJavaScript等得解析,但不会真正地渲染出页面。由于不进行CSSGUI渲染,所以运行效率上要比真实的浏览器快很多,主要用在功能性测试上面。

Edge浏览器

目前Selenium2.47.0版本已经支持Edge浏览器,不过,Edge浏览器只能运行于Windows10。与IE浏览器一样,要想让测试用例在浏览器上运行,需要改浏览器的驱动,但是我们现在并不知道驱动名称和下载地址。当然,我们可以到Selenium官网上寻找答案。不过,这里介绍一种简单粗暴的方式,直接使用报错大法。

 

 在错误信息的最后给出了Edge驱动的下载地址( http://go.microsoft.com/fwlink/?LinkId=619687),复制链接下载MicrosoftWebDriver.msi文件。双击安装,将安装目录添加到系统环境变量path下,或将安装文件夹下的MicrosoftWebDriver.exe文件复制到C:\Python3.5目录下(该目录已经添加到系统环境变量path下)。

下面就可以使用Edge浏览器运行测试脚本了。

 

from selenium import webdriver

driver = webdriver.Edge()
driver.get('http://www.baidu.com')

driver.find_element_by_id('kw').send_keys('Edge')
driver.find_element_by_id('su').click()

driver.quit()

 

Opera浏览器

Opera浏览器的发展不多介绍。最近Opera浏览器采用Blink内核,需要OperaChromiumDriver驱动支持。

GitHub地址:https://github.com/operasoftware/operachromiumdirver

下载operadriver_win64.zip,解压后将得到operadriver.exe文件,同样将其放到C:\Python3.5目录下,原因同上。

from selenium import webdriver

driver = webdriver.Opera()
driver.get('http://www.baidu.com')

driver.find_element_by_id('kw').send_keys('Edge')
driver.find_element_by_id('su').click()

driver.quit()

 

Safari浏览器

Safari为苹果公司的浏览器,最早支持MAC平台,不过,现在已经支持Windows平台。与其他浏览器有所不同,Safari浏览器没有相应的驱动文件,它的驱动被继承到了Selenium Server中,所以,需要通过Remote配置运行。

首先,在Windows命令提示符下启动Selenium Server

java -jar selenium-server-standalone-3.141.59.jar

然后,运行脚本。

from selenium.webdriver import Remote

dc = {'browserName':'safari'}
driver = Remote(command_executor='http://127.0.0.1:444/wd/hub',
                desired_capabilities=dc
                )

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

driver.find_element_by_id('kw').send_keys('Edge')
driver.find_element_by_id('su').click()

driver.quit()

HtmlUnit模式

HtmlUnit官方:http://htmlunit.sourceforge.net/

HtmlUnit是一款开元的Java页面分析工具,读取页面后,可以有效地使用HtmlUnit分析页面上的内容。项目可以模拟浏览器运行,被誉为Java浏览器的开源实现。这个没有界面的浏览器,其运行速度非常迅速Selenium Server中同样包含了HtmlUnit驱动。

首先,在Windows命令提示符下启动Selenium Server

java -jar selenium-server-standalone-3.141.59.jar

然后,运行脚本。

from selenium.webdriver import Remote

dc = {'browserName':'htmlunit'}
driver = Remote(command_executor='http://127.0.0.1:444/wd/hub',
                desired_capabilities=dc
                )

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

driver.find_element_by_id('kw').send_keys('Edge')
driver.find_element_by_id('su').click()

driver.quit()

这种模式下运行脚本并不会真正地打开浏览器,整个过程都是在后台执行的。所以,为了证明运行是成功的,或者证明脚本确实执行了,可以在适当的步骤添加截图。

PhantomJS模式

PhantomJS官方网址:http://phantomjs.org/

PhantomJS是一个拥有JavaScript API的无界面WebKit内核,与HtmlUnit类似。正如我们所知道的,WebKitSafari和其他一些浏览器使用的布局引擎。因此PhantomJS是一个浏览器,而且是一个无界面的浏览器。这意味着渲染后的网页实际上绝不会显示。这或许有些不可思议,所以我们可以把它作为一个可编程的浏览器终端。

在使用PhantomJS之前,需要先下载它。PhantomJS支持WindowsMACLinux等平台,我们可以根据自己的环境选择相应的版本进行下载。

下载完成后解压得到phantomjs.exe程序,将其复制到C:\Python3.5目录下(该目录已经添加到系统环境变量path下)。

 

from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from time import sleep

driver = webdriver.PhantomJS()
driver.get('http://www.baidu.com')
try:
    driver.find_element_by_id('kw').send_keys('Edge')
    driver.find_element_by_id('su').click()
    sleep(1)
    driver.get_screenshot_as_file('d:\\baidu_ok.jpg')
except WebDriverException as msg:
    print(msg)
    driver.get_screenshot_as_file('d:\\baidu_error.jog')
finally:
    driver.quit()

 

通过HtmlUnitPhantomJS进行的自动化测试运行不会真正打开一个浏览器,在我们看来,可见的东西才会觉得是真实的,这时可以在娇嫩必要的位置添加截图,另一方面,截图也可以帮助我们定位。打开。

平台/浏览器/模式

驱动

说明

Android

 

支持脚本在Android WebView应用的测试,一般指移动端浏览器

BlackBerry

 

支持脚本在黑莓浏览器上运行

Firefox

包含在Selenium安装包中

包含在个语言的Selenium(WebDriver)包里,这也是为什么安装完Selenium后就可以直接使用Firefox浏览器运行脚本的原因

Chrome

Chromedriver.exe

因为WebDriver原本为谷歌的项目,之后与Selenium项目合并,所以对Chrome浏览器的支持也非常好

IE

IEDriverServer.exe

需要下载驱动支持,用于驱动脚本在IE系列的浏览器下运行

Edge

MicrosoftWebDriver.exe

支持脚本在Windows10操作系统Edge浏览器下执行

Opera

Operadriver.exe

关于Opera浏览器的前世今生比较复杂,总之,现在的OperaChromiumDriver(原OperaDriver)基于ChromeDriver

Safari

包含在Selenium Server

Safari浏览器由苹果公司开发,最早运行于苹果自家MAC平台,目前也提供Windows版本

HtmlUnit

包含在Selenium Server

HtmlUnit将请求返回文档模拟成HTML,从而模拟浏览器的运行,但又非真正地启动一款浏览器执行脚本

PhantomJS

phantomjs.exe

PhantomJS是一个拥有JavaScript API的无界面WebKit,和HtmlUnit类似,可以看作是一款无界面的浏览器

猜你喜欢

转载自www.cnblogs.com/lirongyang/p/12052626.html