Linux系统下搭建Selenium Grid分布式测试环境
"python工程"->"svn"->"jenkins"
"docker hub node" 搭建执行环境
->“立即构建”
1.使用工具
centos 7、docker、selenium/hub、selenium/node-chrome
2.安装docker
此处docker的安装方式不作讲解,请参考:https://www.cnblogs.com/deai/p/11039071.html
3.获取selenium镜像
查找镜像
通过docker search selenium查看可用的selenium相关镜像
docker search selenium
hub:selenium/hub
node:selenium/node-chrome,selenium/node-chrome-debug
输入命令
docker pull selenium/hub
docker pull selenium/node-chrome
docker pull selenium/node-chrome-debug
下载相关镜像
node的镜像有两种,selenium/node-chrome与selenium/node-chrome-debug,带有debug的镜像中带有vnc服务可以使用vnc viewer进行连接查看运行情况
使用命令docker images查看下载的镜像
docker images
4.部署镜像
hub的部署
docker run -d -p 4444:4444 --name hub selenium/hub
暴露4444端口用于后面脚本的运行
部署成功后,可通过http://主节点ip地址:4444/grid/console 查看节点状态
node的部署
docker run -P -d --link hub:hub --name chrome selenium/node-chrome
--link 是链接别名为hub的容器
注意:这样部署以后未设置容器的共享内存,很有可能造成用例运行过程中,内存不足卡死,可以使用下面的命令给容器设置共享内存,官网建议为2g
docker run -P -d --link hub:hub --name chrome --shm-size=2g selenium/node-chrome
node节点部署成功后会注册到hub中心节点中,如果出现chrome标志则注册成功,可以点击view config查看详细信息
node-debug的部署
docker run -d -p 5900:5900 -p 5555:5555 --shm-size=2g --link hub:hub selenium/node-chrome-debug
debug镜像在部署是需要暴露5900端口用于vnc服务的连接,可以下载vnc viewer连接进镜像中,vnc的初始密码为:secret
5.节点在不同计算机上
当主节点与分支节点在不同的计算机上运行时,需要在部署node时添加启动参数
seleniumHQ网站:https://github.com/seleniumHQ/docker-selenium,网站上有详细说明,以及如何搭建集群
如:主节点运行在192.168.1.165上,分支节点运行在192.168.1.117上
docker run -d -p < node_port >:5555 -e HUB_HOST = < hub_ip | hub_name > -e HUB_PORT = 4444 -e REMOTE_HOST = "http:// <node_ip | node_name>:<node_port>" selenium/node-chrome:3.14.59-palladium
<node_port> 分支节点端口号
<hub_ip|hub_name> 此处只用填写主节点的ip地址
<node_ip | node_name> 分支节点的ip地址
<3.141.59-palladium> 为版本号
完整命令:
docker run -d -p 5555:5555 -e HUB_HOST=192.168.1.165 -e HUB_PORT=4444 -e REMOTE_HOST="http://192.168.1.117:5555" selenium/node-chrome:3.141.59-palladium
6.运行测试脚本
1 public class Test {
2 public static void main(String[] args) throws Exception {
3 DesiredCapabilities browserDriver;
4 browserDriver = DesiredCapabilities.chrome();
5 String url = "http://192.168.1.117:4444/wd/hub";
6 WebDriver driver = new RemoteWebDriver(new URL(url),browserDriver);
7 driver.get("https://www.baidu.com/");
8 driver.findElement(By.id("kw")).sendKeys("Selenium");
9 driver.findElement(By.id("su")).click();
10 Thread.sleep(2000);
11 System.out.println("运行结束");
12 driver.quit();
13 }
14 }
如果运行过程中没有报错且成功打印信息则证明环境搭建成功,也可以使用vncverw连接chrome-node-debug查看运行状态
7.扩展部分
一、设置分支节点浏览器的分辨率信息
默认情况下,节点浏览器以1360 x 1020的屏幕分辨率,颜色深度24位运行。这些设置可以通过调整启动参数SCREEN_WIDTH(宽)
,SCREEN_HEIGHT(高)
和SCREEN_DEPTH(色位)指定需要的分辨率与颜色深度
docker run -d -p 5900:5900 -p 5555:5555 -e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1080 -e SCREEN_DEPTH=24 --shm-size=2g --link hub:hub selenium/node-chrome-debug
使用vnc连接分支节点查看分辨率是否设置成功
二、主节点(hub)并发数设置
设置主节点的最大session数,部署镜像是才能够设置,使用GRID_MAX_SESSION,如果是存在多个分支节点,分支节点上的maxSession和不能大于主节点上的maxSession
docker run -d -p 4444:4444 -e GRID_MAX_SESSION=10 --name hub selenium/hub
三、分支节点(node)并发数设置
默认情况下,每个节点浏览器只支持一个浏览器同时运行,可以通过设置启动参数NODE_MAX_INSTANCES,NODE_MAX_SESSION(节点中同时运行的最大测试数),两个参数必须配合使用
docker run -d -p 5900:5900 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e SCREEN_WIDTH=1920 -e SCREEN_HEIGHT=1080 -e SCREEN_DEPTH=24 --shm-size=2g --link hub:hub selenium/node-chrome-debug
验证并发数设置
通过访问主节点ip:4444/grid/console 查看子节点注册状态,出现五个chrome图标,标识能同时启动五个chrome浏览器
跨平台
Grid支持不同平台的节点连接,这里我们再将windows平台下的node节点注册到linxu主节点下
1.windows平台下使用grid首先需要下载selenium的jar包,这里使用的是3.12的版本
要求:
1):JDK环境(这里不做赘述,可以百度查看)
2):selenium-server-standalone-3.12.jar
下载连接:https://selenium-release.storage.googleapis.com/index.html,进入到3.12文件夹中,下载selenium-server-standalone-3.12.jar
2.下载好以后,打开cmd并且进入到jar包下载目录,并运行下方命令启动node节点
java -jar selenium-server-standalone-3.12.0.jar -role node -hub http://192.168.1.117:4444/grid/register/ -maxSession 5 -browser "browserName=firefox,version=68,platform=WINDOWS,maxInstances=5" -port 5555
windows系统下使用 -hub http://ip:端口/grid/register 进行的子节点注册
-browser 则是浏览器的启动参数,browserName是浏览器名,version是浏览器版本号
注册成功后访问主节点ip:4444/grid/console会出现下方界面,可以看出已经成功注册了firefox浏览器的节点,并且并发数是5