我们有一个自动化脚本,该脚本在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;
无法找出问题所在。
任何帮助将不胜感激。
答案 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。