docker 搭建selenium grid 环境
搭建 selenium-hub
docker run -d --name grid-hub -p 5442-5444:4442-4444 selenium/hub
搭建 selenium-node
docker run -d --name grid-node-chrome-2 -p 5902:5900 -e SE_EVENT_BUS_HOST=10.0.4.15 -e SE_NODE_MAX_SESSIONS=20 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_EVENT_BUS_PUBLISH_PORT=5442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=5443 -v /dev/shm:/dev/shm selenium/node-chrome
docker run -d --name playwright-node -p 5910:5900 --shm-size="2g" -e SE_NODE_MAX_SESSIONS=20 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_EVENT_BUS_HOST=10.0.4.15 -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e SE_NODE_GRID_URL="http://43.143.71.55:4444" selenium/node-chrome
-
-p 5904:5900:将容器内部5900端口映射到服务器5904端口,可在 VNC(Virtual Network Computing)会话中查看节点的界面
-
SE_EVENT_BUS_HOST:hub主机地址
-
SE_NODE_MAX_SESSIONS:节点最大会话数量–浏览器数量
-
SE_NODE_OVERRIDE_MAX_SESSIONS:开启节点最大会话数量限制
-
SE_EVENT_BUS_PUBLISH_PORT:hub的发布端口
-
SE_EVENT_BUS_SUBSCRIBE_PORT:hub的通讯端口
脚本调用hub服务
def setup_class(self):
# 指定 Selenium Grid hub 的地址
hub_url = 'http://43.143.71.55:5444/wd/hub'
# 指定浏览器和对应的 Capabilities
options = webdriver.ChromeOptions()
options.set_capability('browserName', 'chrome')
options.set_capability("browserVersion", "114.0")
options.set_capability("platformName", "linux")
options.set_capability("se:noVncPort", '7900')
options.set_capability("se:vncEnabled", 'true')
self.driver = webdriver.Remote(command_executor=hub_url, keep_alive=True, options=options)
self.driver.set_page_load_timeout(10)
self.driver.maximize_window()