selenium grid
启动容器
docker run -p 5555:4444 -d --name selenium-hub selenium/hub
启动节点
docker run -P -d \
-e SE_EVENT_BUS_HOST=selenium-hub \
-e SE_EVENT_BUS_PUBLISH_PORT=5555 \
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \
-e SE_NODE_MAX_SESSIONS=3 \
-e SE_NODE_SESSION_TIMEOUT=300 \
--link selenium-hub:selenium-hub \
--name chrome-node1 selenium/node-chrome
Python
from selenium import webdriver
options = webdriver.ChromeOptions()
driver = webdriver.Remote(
command_executor="http://你的ip:5555",
options=options
)
driver.get("http://www.baidu.com")
print(driver.title)
driver.close()
driver.quit()
管理页面地址
http://localhost:5555/ui
docker-compose
version: "3.9"
services:
selenium-hub:
image: selenium/hub
ports:
- "5555:4444"
environment:
- HUB_LIVE_VIEW_PASSWORD=你的密码
volumes:
- ./logs:/var/log/selenium
chrome-node:
image: selenium/node-chrome
ports:
- "5900"
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=5555
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_MAX_SESSIONS=3
- SE_NODE_SESSION_TIMEOUT=300
volumes:
- /dev/shm:/dev/shm # Set shared memory size to prevent "DevToolsActivePort file doesn’t exist" error with Chrome
depends_on:
- selenium-hub
firefox-node:
image: selenium/node-firefox
ports:
- "5901"
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=5555
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_MAX_SESSIONS=3
- SE_NODE_SESSION_TIMEOUT=300
volumes:
- /dev/shm:/dev/shm # Set shared memory size to prevent "DevToolsActivePort file doesn’t exist" error with Firefox
depends_on:
- selenium-hub