Python 测开27期 - 柒柒 - selenium grid搭建与使用

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()