Docker 量角器运行以 E/启动器结束 - 进程退出,错误代码为 135



community, 我坚持在 docker 中运行量角器测试。请帮助我解决我的问题。谢谢

这就是我要做的。

  1. 我正在打包带有量角器 e2e 测试的角度应用程序
baseUrl: 'http://localhost:4200/',
seleniumAddress: 'http://172.18.0.2:4444/wd/hub/',

在 Docker 文件的帮助下到 Docker 映像

FROM node:12.8.1-alpine as build-step
WORKDIR /app
COPY package.json ./
RUN npm install
RUN npm install -g protractor@5.4.2
RUN apk add openjdk8
ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/bin
COPY . .
EXPOSE 4200 4444
CMD npm start
  1. 我正在运行 docker-compose 包含运行硒网格容器(集线器和铬(和上面的 dockerfile
version: "3"
services:
hub:
container_name: hub
image: selenium/hub:3.141.59
privileged: true
ports: 
- 4444:4444
environment:
- GRID_BROWSER_TIMEOUT=240000
- GRID_TIMEOUT=240000
chrome:
container_name: node-chrome
image: selenium/node-chrome:3.141.59
privileged: true
shm_size: 256M
depends_on:
- hub
environment:
- HUB_HOST=hub
- no_proxy=localhost
- HUB_PORT_4444_TCP_ADDR=hub
- HUB_PORT_4444_TCP_PORT=4444
testapp:
container_name: testapp
build: .
image: dneprokos/testapp
ports:               
- "4200:4200"
depends_on:             
- chrome
- hub
  1. 我正在尝试执行量角器conf文件命令以运行e2e测试。(硒地址: 'http://172.18.0.2:4444/wd/hub/'(
docker container exec -it testapp sh // to attach
protractor ./e2e/protractor.conf.js // to run tests

笔记:

首先,我尝试使用 localhost 在容器内运行测试,但后来意识到它在容器内包含另一个主机。但是即使我更换了主机,它也没有解决问题。

另外,我尝试不运行网格容器,而是使用"网络驱动程序管理器更新"和"网络驱动程序管理器启动"命令。启动工作正常,但在测试启动期间会发生相同的问题。

正如您可能看起来我已经暴露了端口,因此我可以轻松地在本地检查它是否适用于硒网格和测试应用程序。 只有一件事,如果我尝试在本地连接到"http://localhost:4444/wd/hub/",它会向我显示以下异常:

"会话 ID":空, "状态": 13, "值":{ "class": "org.openqa.grid.common.exception.GridException", "错误": "未知错误", "消息": "会话 [(空外部键(] 不可用,并且不在最近 1000 个终止会话中。活动会话是 []",

预期结果:应启动测试运行

实际结果

[17:44:34] E/launcher - Error code: 135
[17:44:34] E/launcher - Error message: ECONNREFUSED connect ECONNREFUSED 172.18.0.2:4444
[17:44:34] E/launcher - Error: ECONNREFUSED connect ECONNREFUSED 172.18.0.2:4444
at ClientRequest.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:238:15)
at ClientRequest.emit (events.js:203:13)
at Socket.socketErrorListener (_http_client.js:399:9)
at Socket.emit (events.js:203:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at processTicksAndRejections (internal/process/task_queues.js:77:11)
From: Task: WebDriver.createSession()
at Function.createSession (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:769:24)

多亏了一条评论,我已经解决了我的问题。只需要在 protractor.conf 中使用应用程序基础 URL 和 Selenium Hub URL 的容器名称,如下所示

"http://hub:4444/wd/hub">

'baseUrl=http://testapp:4200'

另外,我发现我需要使用以下命令"ng serve --host 0.0.0.0 --disable-host-check"启动一个角度应用程序。在另一种情况下,在容器中打开应用程序会有一些麻烦。

最新更新