学习链接
GitHub - SeleniumHQ/docker-selenium: Docker images for Selenium Grid
Docker Hub
查看docker里面可以用的镜像。
(在上面的第二个连接里面找自己需要的版本,注意,后缀有debug 的是可以通过远程 查看运行的,学习过程中一般选带debug 的)
docker pull selenium/hub
docker pull selenium/node-chrome-debug:3.141.59
docker pull selenium/node-chrome-debug:3.141.5
docker pull selenium/node-chrome-debug:3.14
因为我司的网站只支持谷歌,所以我都是下载的谷歌不同版本的镜像
下拉docker镜像需要用到root权限,切换root用户 ,su
下图是我依次下拉需要的镜像
主要是端口的映射和 --name --link 的值的替换。
sudo docker run -p 5555:4444 --name=hub -d selenium/hub
注册虚拟node
sudo docker run -p 5901:5900 --name=c1 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test1 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm -d selenium/node-chrome-debug:3.141.59
sudo docker run -p 5902:5900 --name=c2 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test2 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm -d selenium/node-chrome-debug
sudo docker run -p 5903:5900 --name=c3 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test3 -d selenium/node-chrome-debug:3.141.5
sudo docker run -p 5904:5900 --name=c4 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test4 -d selenium/node-chrome-debug:3.14
注册真实的node:
将selenium-server-standalone 和 webdriver 放在一个目录下
java -jar selenium-server-standalone-3.8.0.jar -role node -port 8888 -hub http://172.26.3.236:5555/grid/register
java -jar selenium-server-standalone-3.8.0.jar -role node -port 8888 -hub http://172.26.3.236:5555/grid/register
如果注册节点的机器有多个ip地址【如:多网卡、NAT方式安装了虚拟机等】,添加-host参数并指定注册节点的ip
java -jar selenium-server.jar -role node -hub http://hub.ip:4444/grid/register -port 5555 -host node.ip
同样的道理,如果启动hub的机器有多个ip地址,那么注册的时候最好也指定一个明确的ip。使用的是-hubHost参数
java -jar selenium-server.jar -role node -hub http://hub.ip:4444/grid/register -port 5555 -hubHost hub.ip
如果注册不成功,重启hub 服务器。
启动成功用命令:docker ps 查看
服务端ip+映射端口5555
http://localhost:5555/grid/console 或者ip+映射端口/grid/console ,就可以看到所有的node
5.脚本启动:
# coding=utf-8
from selenium import webdriver
chrome_capabilities ={
"browserName": "chrome",
"version": "",
"platform": "ANY",
"javascriptEnabled": True,
# "marionette": True,
}
browser = webdriver.Remote("http://ip:5555/wd/hub", desired_capabilities=chrome_capabilities)
browser.get("http://www.163.com")
browser.get_screenshot_as_file(r"D:/sample/chrome.png")
browser.quit()
6.使用VNC 远程查看。
学习连接:
selenium 结合 docker 构建分布式测试环境 (初学者视角) - AI_爱码小士 - 博客园