Centos+docker+selenium+grid+Jenkins搭建测试自动化环境

一.pull镜像

1.安装selenium/hub镜像

docker pull selenium/hub

2.安装谷歌镜像

docker pull selenium/node-chrome-debug

二.安装容器

1.新建hub容器

**docker run -d -p 4444:4444 --name selehub selenium/hub:latest**

2.新建谷歌容器

docker run -d -p 5901:5900 --name node75  -e NODE_MAX_INSTANCES=100 -e NODE_MAX_SESSION=100 --link=selehub:hub --shm-size=512m selenium/node-chrome-debug

备注:
出现脚本只能运行一次,再次运行时会出现阻塞现象

原因:查看chrome节点配置文件/opt/bin/generate_config中涉及的环境变量NODE_MAX_INSTANCES,默认值为1,说明单个node只能运行一个测试用例。

解决办法:运行完成一个用例后,重启节点。回到selenium自动测试的过程中看,不难理解这种做法。打个比方,node相当于浏览器进程,在运行TestCaseA测试时,会打开浏览器然后运行指定操作,结束后关闭浏览器(进程随之关闭)。再次运行TestCaseA时,会重新打开浏览器(相当于新进程),与前一次毫无关系。只是在docker中,node是一个容器,不会自动关闭,所以要想释放掉当前实例,需要重启node即可。当然还有一种方法,在启动node时加上-e NODE_MAX_INSTANCES=2 -e NODE_MAX_SESSION=2就可以运行两次脚本了,但是达到所设数值上限后还是得重启。

思考:个人认为,用Grid进行自动化测试的应该是较大的系统,相当于跑个一天甚至两天才能出一次测试结果的,所以依据docker最佳实践来说,每次跑节点只需要新建,跑完后销毁或停止节点即可。

三.连接Selenium Grid控制台

1.输入地址

http://服务器IP:4444/grid/console

我这里设置的是100个,所以看着很多
Centos+docker+selenium+grid+Jenkins搭建测试自动化环境_第1张图片
2.通过vnc连接谷歌浏览器

VNC下载地址
链接:https://pan.baidu.com/s/14svRnwptaY6NXDnpZLqcJw
提取码:ptkr

下载后可以直接双击运行,如下图
Centos+docker+selenium+grid+Jenkins搭建测试自动化环境_第2张图片
输入服务器地址+谷歌容器的端口(例如:192.168.1.100:8000),点击连接,默认密码为:secret。如下图,说明连接成功
Centos+docker+selenium+grid+Jenkins搭建测试自动化环境_第3张图片

四.远程启动

1.代码

from  selenium import webdriver
chrome_capabilities ={
    "browserName":"chrome",
    "version": "81.0.4044.138",#注意版本号一定要写对
    "platform": "ANY",
    "javascriptEnabled": True,
    "marionette": True
}
browser=webdriver.Remote("http://服务器IP:4444/wd/hub",desired_capabilities=chrome_capabilities )#注意端口号4444是我们上文中映射的宿主机端口号
browser.get("http://www.baidu.com")

备注版本号可在下图查看:
Centos+docker+selenium+grid+Jenkins搭建测试自动化环境_第4张图片
启动效果图如下:
Centos+docker+selenium+grid+Jenkins搭建测试自动化环境_第5张图片

你可能感兴趣的:(python自动化)