1.1 Selenium Grid简介
Selenium Grid组件专门用于远程分布式测试或并发测试,通过并发执行测试用例的方式可以提高测试用例的执行速度和效率,解决界面自动化测试执行速度过慢的问题。
Selenium Grid使用Hub和Node模式,一天计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多个Node机执行,并收集多台Node机执行结果的报告,汇总后提交一份总的测试报告,如图:
Hub:
l 在分布式测试模式中,只能存在一个Hub节点;
l 负责管理测试脚本,并负责发送节本给其他Node节点;
l 所有的Node节点计算机必须先在作为Hub的计算机中进行注册,注册成功后在和Hub计算机通信,Node节点计算机会告知Hub的信息,如:浏览器相关信息、操作系统
l Hub计算机可以给自己分配执行测试用例的任务
l Hub计算机分发的测试用例任务会在各个Node节点执行
Node:
l 在分布式测试模式中,可以有至少一个Node节点
l Node节点会打开本地的浏览器完成测试任务并返回测试结果给Hub
l Node节点的操作系统和浏览器版本无需和hub保持一致
l 在Node节点上可以同时打开多个浏览器并执行测试任务
1.2 分布式环境搭建
Selenium Grid是基于java开发的jar包,必须要有jdk环境才能运行
去官网(https://www.seleniumhq.org/download/)下载Selenium Standalone Server
1.3 Hub启动参数说明
参数名称 |
参数含义 |
-role hub |
启动hub服务,等待node注册 |
-hubConfig [jsonfile] |
设置一个符合grid规则的json格式的hub配置文件,详细配置见: https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json |
-port |
指定hub端口 |
-host |
指定bub机的ip或者host值,一般不需要设置 |
-newSessionWaitTimeout |
执行一个新的session等待执行的间隔时间,即一个代理节点上前后两个测试间的时间间隔,单位毫秒,默认为-1,即没有超时 |
-browserTimeout |
浏览器无响应的超时时间 |
1.4 Node启动参数说明
参数名称 |
参数含义 |
-role [node|wd|rc] |
为node时,表示注册的RC可以支持所有版本的selenium 为wb时,不支持selenium1,也可以写成webdriver 为rc时,仅支持selenium1 |
-hub hub_url |
注册到hub,hub_url表示hub的访问地址,默认值为:http://hubip:4444/grid/register |
-port |
节点计算机提供远程连接的端口号,也是hub的监听端口 |
-timeout |
Node连接hub的超时时间 |
-maxSession |
在一个node节点中,允许最多打开多少个浏览窗口 |
-browser |
设定node计算机允许使用的浏览器信息,如: browserName=firefox,version=60.0,firefox_binary=d:/firefox60/firefox,maxInstances=3,platform=WINDOWS maxInstances:最多允许同事启动的浏览器窗口数 |
-browserTimeout |
浏览器无响应的超时时间 |
-registerCycle |
Node间隔多少毫秒去连接hub,以便hub重启时,不需要重启node |
-nodeTimeout |
客户端超时时间 |
-nodeConfig [jsonfile] |
符合grid规则的json格式的node配置文件,详见: https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json |
1.5 远程调用Firefox
1.5.1 条件准备
准备两台计算机A和B,A做Hub节点,B做Node
两台计算机都要准备selenium Grid。
1.5.2 操作步骤
1、 在A机cmd窗口,进入selenium-server-standalone-3.141.59.jar包安装目录,执行如下语句:
java -jar selenium-server-standalone-3.141.59.jar -role hub
执行结果如下:
2、 在A机浏览器输入:http://localhost:4444/grid/console,出现如下界面则表示hub启动成功
3、 在B机cmd窗口输入如下命令启动Node:
java -Dwebdriver.gecko.driver=D:\geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.2:4444/grid/register -port 6666 -maxSession 5 -browser browserName="firefox",maxInstances=5
192.168.1.2:4444为A机HubIP及端口
1.6 远程调用Chrome
1.6.1 条件准备
准备两台计算机A和B,A做Hub节点,B做Node
两台计算机都要准备selenium Grid。
1.6.2 操作步骤
1、 在A机cmd窗口,进入selenium-server-standalone-3.141.59.jar包安装目录,执行如下语句:
java -jar selenium-server-standalone-3.141.59.jar -role hub
执行结果如下:
2、 在A机浏览器输入:http://localhost:4444/grid/console,出现如下界面则表示hub启动成功
3、 在B机cmd窗口输入如下命令启动Node:
java -Dwebdriver.gecko.driver=D:\geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.2:4444/grid/register -port 6666 -maxSession 5 -browser browserName="firefox",maxInstances=5
192.168.1.2:4444为A机HubIP及端口
1.7 远程调用IE
1.7.1 条件准备
准备两台计算机A和B,A做Hub节点,B做Node
两台计算机都要准备selenium Grid。
1.7.2 操作步骤
1、 在A机cmd窗口,进入selenium-server-standalone-3.141.59.jar包安装目录,执行如下语句:
java -jar selenium-server-standalone-3.141.59.jar -role hub
执行结果如下:
2、 在A机浏览器输入:http://localhost:4444/grid/console,出现如下界面则表示hub启动成功
3、 在B机cmd窗口输入如下命令启动Node:
java -Dwebdriver.gecko.driver=D:\geckodriver.exe -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.2:4444/grid/register -port 6666 -maxSession 5 -browser browserName="firefox",maxInstances=5
192.168.1.2:4444为A机HubIP及端口