"python工程"->"svn"->"jenkins"
"docker hub node" 搭建执行环境
->“当即构建”html
1.使用工具
centos 七、docker、selenium/hub、selenium/node-chromejava
2.安装docker
此处docker的安装方式不做讲解,请参考:http://www.javashuo.com/article/p-qwmrfdkf-gr.htmlnode
3.获取selenium镜像
查找镜像
经过docker search selenium查看可用的selenium相关镜像python
docker search selenium git
hub:selenium/hub
node:selenium/node-chrome,selenium/node-chrome-debuggithub
输入命令chrome
docker pull selenium/hub docker
docker pull selenium/node-chrome windows
docker pull selenium/node-chrome-debug centos
下载相关镜像
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.扩展部分
1、设置分支节点浏览器的分辨率信息
默认状况下,节点浏览器以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链接分支节点查看分辨率是否设置成功
2、主节点(hub)并发数设置
设置主节点的最大session数,部署镜像是才可以设置,使用GRID_MAX_SESSION,若是是存在多个分支节点,分支节点上的maxSession和不能大于主节点上的maxSession
docker run -d -p 4444:4444 -e GRID_MAX_SESSION=10 --name hub selenium/hub
3、分支节点(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