【发布时间】:2019-09-13 13:52:25
【问题描述】:
我已将 Selenium 网格和 selenium chrome 节点设置为 docker continers,并为我的测试套件创建了一个容器。 但是一旦我尝试运行测试用例,它就无法提供以下错误消息
org.openqa.selenium.remote.UnreachableBrowserException:
Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.141.5', revision: 'd54ebd709a', time: '2018-11-06T11:42:16'
System info: host: '267891a44849', ip: '172.17.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.184-linuxkit', java.version: '11.0.4'
Driver info: driver.version: RemoteWebDriver
Caused by: java.net.ConnectException: Failed to connect to localhost/127.0.0.1:4444
Caused by: java.net.ConnectException: Connection refused (Connection refused)
通过 docker 文件为我的自动化代码创建了一个 docker 镜像
创建了一个 docker 网络
使用 selenium 网格在 docker 上创建了一个集线器
链接到此集线器的节点
并尝试运行代码
我的 Dockerfile 为自动化代码创建镜像
FROM node AS chrome
USER root
WORKDIR /home/app
RUN apt-get install unzip && \
wget https://chromedriver.storage.googleapis.com/77.0.3865.40/chromedriver_linux64.zip && \
unzip chromedriver_linux64.zip && \
chmod +x /home/app/chromedriver
FROM maven:3.6.2-jdk-11-slim
COPY src /home/app/src
COPY pom.xml /home/app
COPY Dockerfile /home/app
WORKDIR /home/app
COPY --from=chrome /home/app/chromedriver /home/app
RUN chmod u+x chromedriver
ENTRYPOINT mvn clean test
我还可以看到 docker hub 和 node up for selenium
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e95780aac878 selenium/node-chrome "/opt/bin/entry_poin…" 29 hours ago Up 29 hours selenium-node
7e23e59006fb selenium/hub "/opt/bin/entry_poin…" 29 hours ago Up 29 hours 0.0.0.0:4446->4444/tcp selenium-hub
我的 SetUp.java 代码如下
String nodeURL= "http://localhost:4446/wd/hub";
ChromeOptions remoteOptions = new ChromeOptions();
driver=new RemoteWebDriver(new URL(nodeURL), remoteOptions);
但在执行时
$ docker run --rm -e SELENIUM_HUB=selenium-node --network grid <my automaiotn code image>
我遇到了错误
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running Parallel01IT
inside after
Failed scenarios:
/home/app/src/test/java/features/NonRes.feature:49
1 Scenarios (1 failed)
3 Steps (1 failed, 2 skipped)
2m0.810s
org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: '61da76b392d3', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.184-linuxkit', java.version: '1.8.0_212'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:566)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:132)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:145)
org.openqa.selenium.remote.UnreachableBrowserException:
Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: '61da76b392d3', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.184-linuxkit', java.version: '1.8.0_212'
Driver info: driver.version: RemoteWebDriver
Caused by: java.net.SocketTimeoutException: connect timed out
但是当我从本地 [我的笔记本电脑] 在那些 docker selenium 网格容器上运行相同的测试用例时,它工作正常 但是,运行与 docker 容器相同的测试用例会失败。
【问题讨论】:
-
指针的一对——不应在单个 Dockerfile 中有两个
FROM语句,其次——不要尝试以 Root 身份运行。建议不要以root身份运行。 -
你能不能试着把
localhost改成0.0.0.0(运行docker镜像时有几个localhost很容易混淆)并重新检查端口(由于某种原因端口4446被链接了)到图片的4444端口selenium/hub)
标签: java docker selenium-grid