官方地址
https://github.com/SeleniumHQ/docker-selenium
推荐命令
$ docker network create grid #创建一个网络 #启动hub docker run -d -p 4442-4444:4442-4444 --net grid -e GRID_MAX_SESSION=5 -e GRID_TIMEOUT=900 --name selenium-hub 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 NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm --name=chrome selenium/node-chrome:latest 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 NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm --name=firefox selenium/node-firefox:latest 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 NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm --name=edge selenium/node-edge:latest #注册可以进入容器内部的node docker run -d -p 4445:4444 -p 7900:7900 --shm-size="2g" -v /dev/shm:/dev/shm --name=chrome-vnc selenium/standalone-chrome:latest docker run -d -p 4446:4444 -p 7901:7900 --shm-size="2g" -v /dev/shm:/dev/shm --name=edge-vnc selenium/standalone-edge:latest docker run -d -p 4447:4444 -p 7902:7900 --shm-size="2g" -v /dev/shm:/dev/shm --name=firefox-vnc selenium/standalone-firefox:latest #运行http://ip:7900 即可进入到容器内部,查看具体浏览器的运行情况
#http://ip:7901/
#http://ip:7902/
密码:secret
我们的测试环境并不是线上环境,需要内部的网络这时候就需要自定义容器内的hosts
下面有几种办法供参考
1、直接在启动容器时与宿主机共享hosts文件,这个的前提是宿主机和容器的hosts一致
docker run -d -p 4442-4444:4442-4444 --net grid -e GRID_MAX_SESSION=5 -e GRID_TIMEOUT=900 -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name selenium-hub selenium/hub:latest 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 NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=chrome selenium/node-chrome:latest 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 NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=firefox selenium/node-firefox:latest 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 NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=edge selenium/node-edge:latest docker run -d -p 4445:4444 -p 7900:7900 --shm-size="2g" -v /dev/shm:/dev/shm -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=chrome-vnc selenium/standalone-chrome:latest docker run -d -p 4446:4444 -p 7901:7900 --shm-size="2g" -v /dev/shm:/dev/shm -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=edge-vnc selenium/standalone-edge:latest docker run -d -p 4447:4444 -p 7902:7900 --shm-size="2g" -v /dev/shm:/dev/shm -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=firefox-vnc selenium/standalone-firefox:latest
2、使用docker run -add-host 选项增加内容
示例:
docker run –add-host=hostname:IP docker run -it --name alpine-test1 --add-host=test.baidu.com:192.168.1.37 docker.io/alpine
3、在docker-compose.yml文件中,通过配置参数extra_hosts来实现。例如:
extra_hosts: - "somehost:10.10.192.11" - "otherhost:10.10.192.23"
4、搭建完成后访问回 http://ip:4444
执行测试脚本
from selenium import webdriver def test_selenium_grid(): driver = None try: driver = webdriver.Remote(command_executor='http://ip:4446', desired_capabilities={'browserName': 'edge'}) driver.get('http://test.wanfangdata.com.cn') driver.implicitly_wait(15) driver.get_screenshot_as_file("./test_img.png") print("OK") finally: if driver is not None: driver.quit()
进入到容器内部
’http://ip:7901/ 输入密码 即可看到容器内部浏览器运行的效果了