Selenium学习之——grid

何时需要 Selenium Grid
  在了解了什么是 Selenium Grid 和其基本结构后,那么我们开始关心我们何时需要它呢?下面列出两点:

1. 当你的脚本需要在不同的系统和浏览器运行时,也就是测试需要考虑各种浏览器兼容性时。
2. 当你想缩短你的测试执行时间时。
当你开始考虑上面两个问题时,那么可以考虑使用Selenium Grid .

怎么使用
 注意:Selenium Grid 是用java开发的框架,所以你想运行这个框架,你需要有java环境。Java环境的搭建可以参考http://www.jianshu.com/p/74a5ea7fd369 。

下载jar包
  下载地址:http://selenium-release.storage.googleapis.com/index.html ,选取最新版本,例如写这个文章时最新版本是2.53,那么进入2.53文件夹下载 selenium-server-standalone-2.53.0.jar 文件便可。

启动Hub 节点:
在控制台(终端)输入:java -jar selenium-server-standalone-2.53.0.jar -role hub
提示Selenium Grid hub is up and running 表示Hub启动成功

这时可以访问浏览器 http://localhost:4444/grid/console 可以看到Hub管理页面

点击 view config,可以查看到当前hub节点的一些配置默认配置信息,例如:
port : 4444 这个是hub 默认的端口号;

throwOnCapabilityNotPresent : true 默认为 true,表示当前hub只有在有node存在时,才会接受测试请求。为false 则反之;

capabilityMatcher : org.openqa.grid.internal.utils.DefaultCapabilityMatcher 这是一个实现了CapabilityMatcher接口的类,默认指向org.openqa.grid.internal.utils.DefaultCapabilityMatcher该类用于实现grid在分布测试任务到对应node时所使用的匹配规则,如果想要更精确的测试分配规则,那么就注册一个自己定义的匹配类;

prioritizer : null 这是一个实现了Prioritizer接口的类。设置grid执行test任务的优先逻辑;默认为null,那个脚本先到那个先执行;

newSessionWaitTimeout : -1 默认-1,即没有超时;指定一个新的测试session等待执行的间隔时间。即一个代理节点上前后2个测试中间的延时时间,单位为毫秒;

browserTimeout : 0 浏览器无响应的超时时间,默认为0表示没有超时时间

修改 hub 的配置
想要修改 hub 的配置有两种方法。

1、通过命令修改
例如假设我的 4444端口被别的程序占用了,我想修改默认的端口为4445,则如下:
java -jar selenium-server-standalone-2.53.0.jar -role hub -port 4445

2、通过Json文件修改配置:
新建个json格式的文件,内容如下(这里仅仅修改了maxSession的配置,默认是5),并放于跟Grid jar包同一目录:
{ "host": null, "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "prioritizer": null, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "throwOnCapabilityNotPresent": true, "nodePolling": 5000, "cleanUpCycle": 5000, "timeout": 300000, "browserTimeout": 0, "maxSession": 10 }
执行命令:java -jar selenium-server-standalone-2.53.0.jar -role hub -hubConfig hub.json
这时再到 Grid Console 页面查看,maxSession 参数已经修改成 10.

node 节点Selenium 环境要求
在添加node节点前,我们先关注下,node 节点对环境要求:

1. node 节点必须要有 java 环境
2. node 节点跟hub 节点机器间可以互相 ping 通。(不通时关闭防火墙和安全软件再试试)
3. node 节点负责执行Selenium 脚本,所以必须有Selenium 环境(脚本语言对应的环境如java, 各个浏览器及其对应的driver)

添加 node 节点
如果你是跟hub同一台机器中添加可以直接在控制台(终端)输入如下命令:
java -jar selenium-server-standalone-2.53.0.jar -role node

如果你想在别的机器上添加node节点则控制台(终端)输入如下命令:
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://192.168.1.110:4444/grid/register

添加完节点后,可以在 Grid Console 页面上查看到已经注册进来的node节点信息和配置

补充:
使用 -role node 注册表示这个node节点既可以支持Selenium Remote Control 也支持Webdriver
java -jar selenium-server-standalone-2.53.0.jar -role rc //注册的节点仅支持Selenium Remote Control
java -jar selenium-server-standalone-2.53.0.jar -role wd //注册的节点仅支持WebDriver

修改 node 配置
同样node的配置有两种方式

1、通过命令修改
java -jar selenium-server-standalone-2.53.0.jar -role rc -port 6666

2、通过json文件修改
例如新建一个node.json文件,如下内存,并放于Grid 同级目录下
{ "capabilities": [ { "browserName": "chrome", "maxInstances": 5, "platform": "WINDOWS", "version":"51" }, { "browserName": "firefox", "maxInstances": 6, "platform": "WINDOWS", "version":"46.0.1" }, { "browserName": "internet explorer", "maxInstances": 2, "platform": "WINDOWS", "webdriver.ie.driver": "IEDriverServer.exe" } ], "configuration": { "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "maxSession": 5, "port": 5555, "register": true, "registerCycle": 5000, "hub": "http://192.168.84.209:4444" } }
重要参数说明:
"browserName": “chrome" 这个很重要,表示你注册的浏览器
"maxInstances": 5 这个参数表示最多启动该浏览器的个数
"webdriver.ie.driver": “IEDriverServer.exe” 每个浏览器driver放置的位置,建议放跟Grid 同级目录下

执行命令:
java -jar selenium-server-standalone-2.53.0.jar -role node -nodeConfig node.json -hub http://192.168.84.209:4444/grid/register
最后查看Grid Console 页面,查看node节点信息

到此为止,我们已经配置好Hub和需要的多个Node节点了,下面可以开始编写测试代码进行测试了。







参考:http://www.360doc.com/content/16/1121/14/36343398_608254453.shtml


OK.

posted on 2020-04-02 08:01  乘除减加  阅读(257)  评论(0)    收藏  举报

导航

作者:乘除减加 出处: 本文版权归 乘除减加 所有,欢迎转载但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以微信:15510211823 联系我,非常感谢。