Docker Selenium网格无法连接我们的客户端URL

时间:2018-11-26 14:10:25

标签: docker jenkins selenium-chromedriver selenium-grid

我们有一个自动化脚本,该脚本在Docker中的jenkins和grid中运行。 因此,无论何时我们尝试运行硒代码,它都会连接到网格节点chrome或ff,然后基于硒java代码执行。

这一切都发生在安装了docker的linux服务器中,我们有四个容器-Jenkins,Selenium网格,chrome节点和ff节点。

但是当我尝试从jekins运行作业时,它失败并给出以下错误-

runners.TestRunner > Scenario: Extract the Report.classMethod FAILED
org.openqa.selenium.remote.UnreachableBrowserException
Caused by: java.net.NoRouteToHostException
org.openqa.selenium.remote.UnreachableBrowserException
Caused by: java.net.NoRouteToHostException
org.openqa.selenium.remote.UnreachableBrowserException
Caused by: java.net.NoRouteToHostException

现在,当我不从docker设置运行并从IntelliJ运行它时,同样可以正常工作。

private WebDriver createSTAGEDriver() throws MalformedURLException {
        switch (driverType) {
            case GridChrome :
                DesiredCapabilities cap = DesiredCapabilities.chrome();
                cap.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
                driver = new RemoteWebDriver(new URL("http://xx.xx.xxx.xxxx:xxxxx/wd/hub"),cap);
                break;

无法找出问题所在。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是固定的,

在createSTAGEDriver函数中,实际上是IP而不是IP,我需要提及在docker .yml文件中定义的ip的名称

version: '2'
services:
 hub:
   restart: always
   image: selenium/hub:3.14
   ports:
     - "4444:4444"
   networks:
     - "selenium-grid_default"
 firefox:
   restart: always
   image: selenium/node-firefox:3.5
   environment:
    - HUB_PORT_4444_TCP_ADDR=hub
    - HUB_PORT_4444_TCP_PORT=4444
    - NODE_MAX_INSTANCES=2
    - NODE_MAX_SESSION=2
   links:
    - "hub"

因此,基本上,我需要使用链接中定义的集线器,而不是ip。