标签:
Selenium Grid 支持分布式测试,使测试人员可在分布式环境中进行测试
一般而言,在面临以下情况时可考虑使用Selenium Grid :
1.测试多个浏览器或单个浏览器多个版本,或测试不同操作系统上各种浏览器
2.减少测试套件运行时间
Selenium Grid 包含一个Hub 和至少一个 Node,两者都可由 selenium-server-standalone.jar 文件启动
Selenium Grid 的部署
1.安装Selenium Grid :从Selenium 官网下载 selenium-server-standalone.jar 文件即可。Java 可执行文件的路径必须正确,这样才能从命令行运行文件,如果运行出错,检查系统的路径变量看其是否依据包括Java 可执行文件的路径
2.启动Selenium Grid :一般而言,运行Selenium Grid 需要先启动Hub,因为 Node 的调用依赖于 Hub
1、Grid Hub
1)默认启动 Hub
用下面的命令可启动默认设置的Hub
$java -jar selenium-server-standalone-2.37.0.jar -role hub
所有可支持操作系统都能调用该命令。需要注意的是根据selenium-server-standalone 版本的不同,jar 文件名里的版本号需要有相应改动。Hub 启动的默认端口号为4444,用户可通过 -port 参数来定义其启动端口
可通过浏览器中输入如下地址来检查 Hub 是否启动成功:
http://localhost:4444/grid/console
单击view config 可查看Selenium Grid 的配置信息,默认情况下,单个Hub 支持的最大会话数为5个
2)配置 Hub 端口
Hub 默认端口是4444,当自动化测试用例连接到 Selenium Grid Hub 时,监听端口就是TCP/IP 端口,如果机器上已经有另一个程序在使用这个端口,或 selenium-server-standalone 已经被启动,日志会提示端口已经被占用而无法启动Selenium Grid Hub 。
解决方案之一是关闭正在使用4444端口的程序,解决方案二是让 Selenium Grid Hub 使用另一个端口。在命令行中用 -port 更换 Hub 使用的端口:
$java -jar selenium-server-standalone-2.37.0.jar -role hub -port 8888
该方法即使在已有Hub 在机器上运行时也能奏效,只要这两个 Hub 所使用的端口不一样。
如果想知道机器上所有正在运行的程序使用哪些端口,可用下面命令:
$netstat -a
3)JASON 配置文件
除了在启动命令中指定参数来定制 Hub 的配置,还可以通过预定义好的配置文件来启动 Hub。这些配置信息可写在一个 JASON 格式的配置文件中,示例:
{
"host":null,
"port":4444,
"timeout":300000,
"maxSession":5,
...
}
然后通过在启动命令中添加 -hubConfig 参数来加载该 JASON 配置文件
$java -jar selenium-server-standalone-2.37.0.jar -role hub -hubConfig
hub-json-cfg.json
2、Grid Node
1)默认启动 Node
通过如下命令;
$java -jar selenium-server-standalone-2.37.0.jar -role node -hub
htttp://localhost:4444/grid/register
这里假设默认设置的 Hub 已经被启动。Hub 用来监听新请求的默认端口是4444,所以定位 Hub 的URL 中使用了4444这个端口。使用本地主机是假定 Node 和 Hub 在同一台机器上运行。
如果在不同机器上运行 Node 和 Hub,则需要将本地主机名替换成运行Hub 的机器的主机名。在这种情况下,Node 会将本机操作系统所能支持的浏览器信息全部注册到 Hub 上。
如果将参数-roal node 替换成 -role webdriver,则表示该 Node只兼容WebDriver 的执行模式。相应的,如果替换成 -role rc,则表示该Node 只兼容 Remote Control 的执行模式
2)注册 Mac OS X&Opera
2种方式将Node 注册到 Hub上,第一种是通过命令行的方式添加,只需要加上相应的参数:
$java -jar selenium-server-standalone-2.37.0.jar -role node -browser "seleniumProtocol=WebDriver, browserName=opera,version=15,maxInstances=1,platform=MAC" -hubHost localhost
可通过浏览器中输入如下地址来检查 Hub 是否注册成功:
http://localhost:4444/grid/console
第二种方式是创建一个 JASON 格式的配置文件,并在启动 Node 时加载该JSON 配置文件
{
"class":"org.openqa.grid.common.RegistrationRequest",
"capabilities":[
{
"seleniumProtocol":"WebDriver",
"browserName":"opera",
...
}
],
"configuration":{
"maxSession":5,
...
}
}
然后通过在启动命令中添加 -nodeConfig 参数来加载该 JASON 配置文件
$java -jar selenium-server-standalone-2.37.0.jar -role node -nodeConfig
hub-json-mac-opera.cfg.json
3)注册 Linux & Firefox
如果系统中存在多个浏览器版本,则需要指定浏览器的可执行程序路径。本示例设定的配置项如下:
执行模式为WebDriver,以Firefox 最新版本的路径firefox_binary 为例,maxInstances 设置为2,表示最大支持2个浏览器实例的执行
$java -jar selenium-server-standalone-2.37.0.jar -role node -browser "seleniumProtocol=WebDriver, browserName=firefox,version=25,firefox_binary=/home/selenium2/firefox25/firefox maxInstances=2,platform=LINUX" -hubHost 192.168.0.104
4)注册 windos & Internet Explorer
C:\Selenium2> java -jar selenium-server-standalone-2.37.0.jar -role node -browser "seleniumProtocol=Selenium, browserName=iexplore,version=10,maxInstances=4,platform=WINDOWS" -hubHost 192.168.0.104
5)
标签:
原文地址:http://www.cnblogs.com/feifeidxl/p/4613611.html