Docker 量角器 运行 以 E/launcher 结束 - 进程已退出,错误代码为 135
Docker protractor run ends with E/launcher - Process exited with error code 135
社区,
我坚持 docker 中的 运行 量角器测试。请帮我解决我的问题。谢谢
这就是我想要做的。
- 我正在用 Protractor e2e 测试打包 Angular 应用程序
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
- 我正在 运行ning docker-compose 包含 运行ning 硒网格容器(集线器和 chrome)和 docker 上面的文件
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
- 我正在尝试执行量角器 conf 文件命令以进行 运行 e2e 测试。 (seleniumAddress: '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 在容器内部进行测试,但后来意识到它在容器内部包含另一个主机。但是即使我更换了主机,它也没有解决问题。
此外,我尝试不使用 运行 网格容器,而是使用 "webdriver-manager update" 和 "webdriver-manager start" 命令。启动工作正常,但在测试启动期间会发生同样的问题。
如您所见,我已经公开了端口,因此我可以轻松地检查它在本地是否适用于 selenium 网格和测试应用程序。
只有一件事,如果我试图在本地连接到“http://localhost:4444/wd/hub/”,它会显示以下异常:
"sessionId": 空,
"status": 13,
"value":{
"class": "org.openqa.grid.common.exception.GridException",
"error": "unknown error",
"message": "Session [(null externalkey)] not available and is not among the last 1000 terminated sessions.\nActive sessions are[]",
预期结果:应该开始测试运行
实际结果:
[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" 启动一个 angular 应用程序。还有一种情况,在容器中打开应用程序会出现一些问题。
社区, 我坚持 docker 中的 运行 量角器测试。请帮我解决我的问题。谢谢
这就是我想要做的。
- 我正在用 Protractor e2e 测试打包 Angular 应用程序
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
- 我正在 运行ning docker-compose 包含 运行ning 硒网格容器(集线器和 chrome)和 docker 上面的文件
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
- 我正在尝试执行量角器 conf 文件命令以进行 运行 e2e 测试。 (seleniumAddress: '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 在容器内部进行测试,但后来意识到它在容器内部包含另一个主机。但是即使我更换了主机,它也没有解决问题。
此外,我尝试不使用 运行 网格容器,而是使用 "webdriver-manager update" 和 "webdriver-manager start" 命令。启动工作正常,但在测试启动期间会发生同样的问题。
如您所见,我已经公开了端口,因此我可以轻松地检查它在本地是否适用于 selenium 网格和测试应用程序。 只有一件事,如果我试图在本地连接到“http://localhost:4444/wd/hub/”,它会显示以下异常:
"sessionId": 空, "status": 13, "value":{ "class": "org.openqa.grid.common.exception.GridException", "error": "unknown error", "message": "Session [(null externalkey)] not available and is not among the last 1000 terminated sessions.\nActive sessions are[]",
预期结果:应该开始测试运行
实际结果:
[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" 启动一个 angular 应用程序。还有一种情况,在容器中打开应用程序会出现一些问题。