安装Docker
MAC平台 Windows平台 Ubuntu平台 Centos7平台
下载主hub
镜像selenium/hub
1 2 3 4 docker pull selenium/hub docker run -d -P --name selenium-hub selenium/hub
-d
表示容器以守护态(Daemonized)形式运行。-P
表示 Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
下载主node chrome
镜像selenium/node-chrome
1 2 3 4 docker pull selenium/node-chrome docker run -d --link selenium-hub:hub selenium/node-chrome
--link
通过 link 关联selenium-hub
容器,并为其设置了别名hub
查看容器 1 2 3 4 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 65bdddeb9293 selenium/node-chrome "/opt/bin/entry_poin…" 17 seconds ago Up 16 seconds intelligent_mirzakhani a280e0bce3a4 selenium/hub "/opt/bin/entry_poin…" 38 seconds ago Up 36 seconds 0.0.0.0:32768->4444/tcp selenium-hub
Selenium/hub
容器的端口号为4444
,对MAC
映射的端口为32768
,前面通过-P
参数自动分配。
工作原理 selenium Grid脚本 -> ubuntu(32768) -> Hub容器(4444) -> Node Chrome 容器
创建Grid测试脚本与运行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from selenium import webdriverfrom time import sleepdriver = webdriver.Remote( command_executor='http://127.0.0.1:32768/wd/hub' , desired_capabilities={'browserName' : 'chrome' } ) driver.get('https://www.baidu.com' ) print("get baidu" ) driver.find_element_by_id("kw" ).send_keys("docker selenium" ) driver.find_element_by_id("su" ).click() sleep(1 ) driver.get_screenshot_as_file("~/baidu_img.png" ) driver.quit() print("end..." )
1 2 3 4 5 6 docker run --name=chrome -p 5902:5900 \ -e NODE_MAX_INSTANCES=5 \ -e NODE_MAX_SESSION=5 \ -e NODE_REGISTER_CYCLE=5000 \ -e DBUS_SESSION_BUS_ADDRESS=/dev/null \ --link hub -d selenium/node-chrome-debug:3.7.1-beryllium