docker拉取镜像
docker pull selenium/hub
docker pull selenium/node-chrome
docker pull selenium/node-firefox
docker pull selenium/node-edge
运行Selenium Hub
首先创建网络
docker network create grid
运行hub,
docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest
#说明:
#-p 4442-4444:4442-4444 将容器中的端口映射到宿主机对应端口
#-net grid 使用grid网络
#--name selenium-hub 容器名称
#selenium/hub:latest 使用selenium/hub镜像的latest标签版本
运行node节点
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub --shm-size=2g -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e SE_NODE_MAX_SESSIONS=3 --name selenium-node-chrome1 selenium/node-chrome:latest
#说明:
#-d 后台运行
#-net grid 使用grid网络
#-e SE_EVENT_BUS_HOST=selenium-hub 事件路径HOST为hub节点
#-e SE_EVENT_BUS_PUBLISH_PORT=4442 事件路径发布端口
#-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 事件路径订阅端口
#-e SE_NODE_MAX_SESSIONS=3 设置节点最大并发数
#--name selenium-node-chrome1 容器名称
#selenium/node-chrome:latest 使用selenium/node-chrome镜像的latest标签版本
自动化测试脚本中调用
WebDriver driver = null;
ChromeOptions options = OpenBrowser.openChrome();
driver = new RemoteWebDriver(new URL("http://192.168.1.2:4444/wd/hub"),options);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(2000, TimeUnit.MILLISECONDS);
访问:http://192.168.1.2:4444/ui# 可以看到grid的各个节点
运行脚本时,在Sessions中可以远程观看浏览器运行状态,密码:secret