官网说明:https://github.com/SeleniumHQ/docker-selenium
Standalone Chrome and Firefox
$ docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.141.59-vanadium
# OR
$ docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-firefox:3.141.59-vanadium
Selenium Grid Hub and Nodes
使用 docker 局域网方式
此时需要创建hub和node相通的一个网络,这里取名为“grid”
$ docker network create grid
$ docker run -d -p 4444:4444 --net grid --name selenium-hub selenium/hub:3.141.59-vanadium
$ docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome:3.141.59-vanadium
$ docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-firefox:3.141.59-vanadium
使用结束后,需要删除网络
# 删除所有未使用的网络
$ docker network prune
# 或
# 只删除刚才创建的“grid”网络
$ docker network rm grid
使用 docker 构建方式
创建docker-compose.yaml
文件:
docker-compose安装: https://docs.docker.com/compose/install/
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-vanadium
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-vanadium
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox:3.141.59-vanadium
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
在同一个文件夹内使用 docker-compose up
命令启动,
使用 docker-compose down
命令停止服务。
docker容器配置
指定Hub的主机名和端口
$ docker run -d -e HUB_HOST=<hub_ip|hub_name> -e HUB_PORT=4444 selenium/node-chrome:3.141.59-vanadium
指定Node的主机名和端口
$ 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-firefox:3.141.59-vanadium
设置分辨率
默认分辨率:1360 x 1020 ,24位彩色,96DPI,可以通过下面的参数修改:
docker run -d -e SCREEN_WIDTH=1366 -e SCREEN_HEIGHT=768 -e SCREEN_DEPTH=24 -e SCREEN_DPI=74 selenium/standalone-firefox
增加浏览器实例数
默认一个Node容器只创建1个slot ,可以通过下面的参数修改:
$ docker run -d -e HUB_HOST=<hub_ip|hub_name> -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 selenium/node-firefox:3.141.59-vanadium
如果运行无头模式,可以不启动Xvfb环境。
$ docker run -d --net grid -e HUB_HOST=selenium-hub -e START_XVFB=false -v /dev/shm:/dev/shm selenium/node-chrome
Docker 构建 Chrom双节点完整实例
- 无头模式
- 每个节点最多5个实例,每个实例最多5个session
- 浏览器的系统时间与宿主的时间一致
- 时区为中国时区
docker-compose.yaml
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-vanadium
container_name: selenium-hub
volumes:
- /etc/localtime:/etc/localtime
environment:
- TZ=Asia/Shanghai
ports:
- "4444:4444"
chrome1:
image: selenium/node-chrome:3.141.59-vanadium
volumes:
- /dev/shm:/dev/shm
- /etc/localtime:/etc/localtime
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- NODE_MAX_INSTANCES=5
- NODE_MAX_SESSION=5
- START_XVFB=false
- TZ=Asia/Shanghai
chrome2:
image: selenium/node-chrome:3.141.59-vanadium
volumes:
- /dev/shm:/dev/shm
- /etc/localtime:/etc/localtime
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- NODE_MAX_INSTANCES=5
- NODE_MAX_SESSION=5
- START_XVFB=false
- TZ=Asia/Shanghai