一、Selenium Grid介绍
1、概念
Selenium Grid组件专门用于远程分布式测试或并发测试,通过并发执行测试用例的方式可以提高测试用例的执行速度和效率,解决界面自动化测试执行速度过慢的问题
2、可以怎么做
使用此组件可以在一台计算机上给多台计算机(不同操作系统和不同版本浏览器环境)分发多个测试用例从而并发执行,大大提高了测试用例执行效率,基本满足大型项目自动化测试的时限要求和兼容性要求
3、版本
1.0版本
2.0版本,最多可以远程控制5个浏览器
4、工作模式
Selenium Grid使用Hub和Node模式,一台计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多台Node计算机执行,并收集多台Node计算机执行结果的报告,汇总后提交一份总的测试报告
4.1、Hub
1.在分布式测试模式中,只有一台作为Hub的计算机
2.Hub负责管理测试脚本,并负责发送脚本给其他Node节点。
3.所有的Node节点计算机必须先在作为Hub的计算机中进行注册,注册成功后再和Hub计算机通信,Node节点计算机会告知Hub自己的相关信息,例如,Node节点的操作系统和浏览器的相关版本
4.Hub计算机可以给自己分配执行测试用例的任务
5.Hub计算机分发的测试用例任务会在各个Node计算机节点执行
4.2、Node
1.在分布式测试模式中,可以有一个或者多个Node节点
2.Node节点会打开本地的浏览器完成测试任务并返回测试结果给Hub
3.Node节点的操作系统和浏览器版本无需和Hub保持一致
4.在Node节点上可以同时打开多个浏览器并行执行测试任务
二、Selenium Grid使用方法
2.1、测试环境准备
1、下载JDK 1.8,安装bin并配置环境变量
2、Hub计算机和Node计算机均访问 http://www.seleniumhq.org/download
下载‘Selenium Standalone Server’中的jar文件 selenium-server-standalone-x.xxx.xx.jar
3、Hub计算机上打开CMD窗口,将当前工作目录切换到 jar文件所在目录,执行:java -jar selenium-server-standalone-3.141.59.jar -role hub
(-role hub:启动一个Hub服务,作为分布式管理中心,等待WebDriver客户端进行注册和请求,默认接收注册地址为 http://localhost:4444/grid/register,默认启动该端口为4444)
4、在Hub计算机的Firefox浏览器访问 http://localhost:4444/grid/console,如果访问的网页中显示‘view config’的链接,表示可以访问次网站。讲locahost换成本机的真实ip依然可以正常访问
5、Node计算机中打开CMD窗口,将当前工作目录切换到 jar文件所在目录,执行:java -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://192.168.1.7:4444/grid/register -port 6655 -browser browserName='chrome'(或:browserName='firefox' 或-browser browserName='ie')
(1)role:参数值webdriver表示Node(节点)的名字
(2)hub:参数值表示管理中心的URL地址,Node会链接这个地址进行节点注册
(3)port:参数值表示Node节点服务的端口号为6655,建议使用大于5000的端口号
6、再次访问 http://192.168.1.10:4444/grid/console,验证Node节点是否已在Hub上注册成功,注册成功如图所示。
从此页面可以获取到节点计算机允许不同种类的浏览器打开多少个实例,验证节点计算机执行命令行的正确性。
2.2、编写分布式执行的测试脚本
1、使用chrome浏览器访问百度首页,输入关键字‘selenium’进行搜索,验证搜索结果的页面源码中包含'selenium'关键字。
2、执行脚本,Node计算机会自动启动chrome浏览器执行测试脚本,执行完毕后在Hub计算机上可以看到自动化测试的执行结果。