首页 > 解决方案 > 无法将 chrome 节点与集线器绑定

问题描述

我有下面的 docker-compose.yml 文件,它将 Chrome、Firefox 节点绑定到集线器。

version: "3"
services:
  selenium-hub:
    image: selenium/hub
    container_name: selenium-hub
    ports:
      - "4444:4444"
  
  chrome:
    image: selenium/node-chrome-debug
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
  
  firefox:
    image: selenium/node-firefox-debug
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

绑定后,我想通过docker-compose scale chrome=3 firefox=3来扩大实例数量。

但是当我触发我的套件时,我收到了错误:

org.openqa.selenium.WebDriverException: Error forwarding the new session Empty pool of VM for setup Capabilities {acceptInsecureCerts: true, browserName: firefox, version: }
Command duration or timeout: 191 milliseconds
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

这就是我的 RemoteWebDriver 路由流量的方式:

if(strBrowsername.equalsIgnoreCase("Chrome"))
            {

                try {
                    driver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome()));
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }else {

                try {
                    driver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.firefox()));
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

我觉得不知何故,缩放的 chrome 实例无法绑定到 Hub。这些按比例放大的 chrome 实例如何绑定到 Hub?

标签: dockerseleniumselenium-chromedriver

解决方案


我想我写错了 docker-compose。

以下帮助:

version: "3"
services:
  selenium-hub:
    image: selenium/hub
    ports:
      - "4444:4444"
  
  chrome:
    image: selenium/node-chrome-debug
    shm_size: '1gb'
    depends_on:
      - selenium-hub
    ports:
      - 5901:5900
    environment:
      HUB_HOST: selenium-hub
      HUB_PORT: 4444
      NODE_MAX_SESSION: 3
      NODE_MAX_INSTANCES: 3

  firefox:
    image: selenium/node-firefox-debug
    shm_size: '1gb'
    depends_on:
      - selenium-hub
    ports:
      - 5902:5900
    environment:
      HUB_HOST: selenium-hub
      HUB_PORT: 4444
      NODE_MAX_SESSION: 3
      NODE_MAX_INSTANCES: 3

推荐阅读