无法创建会话。 Chrome 启动失败:崩溃。 CodeceptJs 和 Dockerfile 不存在 DevToolsActivePort 文件
Failed to create session. Chrome failed to start: crashed. DevToolsActivePort file doesn't exist for CodeceptJs and Dockerfile
我是来自 Selenium/Java 背景的 Docker 和 CodeceptJs 的超级新手,我正在尝试从 docker 容器中 运行 我们的 CodeceptJs 测试。但是,我们收到此错误,但不确定如何绕过它。
我尝试按照 here 使用 java -jar selenium.jar
在另一个 window 下启动 Selenium 驱动程序(它不在我的项目文件夹下),但同样的问题仍然存在。
如果我们在 CodeceptJs 之外使用原始 Selenium,这里的大多数答案都是关于为 ChromeDriver 实例设置一些选项,但是 ChromeDriver 配置似乎是在 CodeceptJs 框架内从我这里抽象出来的,所以我觉得我现在有点卡住了请
这是我们完整的Docker文件和bash脚本
FROM docker.br.hmheng.io/base-ubuntu:java_1.8.0_74-b02
ENV DEBIAN_FRONTEND noninteractive
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - \
&& sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' \
&& apt-get clean \
&& apt-get update \
&& apt-get install curl -y \
dpkg
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y \
libgconf-2-4 \
libexif12 \
supervisor \
netcat-traditional \
google-chrome-stable \
git \
chromium-chromedriver \
nodejs \
xorg \
xvfb \
dbus-x11 \
xfonts-100dpi \
xfonts-75dpi \
xfonts-scalable \
xfonts-cyrillic \
dos2unix \
--no-install-recommends
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
ENV HOST selenium
RUN export JAVA_HOME=/usr/lib/jvm/java-8-oracle \
&& export HOST=selenium
COPY ./update-catalog-admin/tests/e2e/scripts/start.sh start.sh
RUN chmod 777 start.sh \
&& dos2unix start.sh
和
#!/bin/bash
echo "[INFO] Starting X server"
Xvfb :0 -screen 0 1600x1200x24 2>&1 >/dev/null &
export DISPLAY=:0
cd /project
node -v
npm -v
ls -lsa
npm install
npm test
运行 通过这个命令:
docker run -u 500:500 -v /etc/passwd:/etc/passwd:ro -v $(pwd)/update-catalog-admin/tests/e2e:/project:rw -v /dev/shm:/dev/shm --shm-size=4g update-catalog-e2e-container sh start.sh
还有这个codecept.conf.js
exports.config = {
output: './output',
helpers: {
WebDriver: {
url: 'https://api.int.br.internal',
browser: 'chrome'
},
AssertWrapper: {
require: 'codeceptjs-assert',
},
},
include: {
I: './steps_file.js',
createNotificationPage: "./pages/create_notifications.page.js",
},
mocha: {},
bootstrap: null,
teardown: null,
hooks: [],
gherkin: {
features: './features/*.feature',
steps: ['./step_definitions/steps.js']
},
plugins: {
wdio: {
enabled: true,
services: ['selenium-standalone']
// additional config for service can be passed here
},
screenshotOnFail: {
enabled: true
},
pauseOnFail: {},
retryFailedStep: {
enabled: true
},
},
tests: './*_test.js',
name: 'codeceptjs_webdriver'
}
非常感谢。
我们找到了在 codecept.cong.js
文件中设置 ChromeOptions
的位置,现在可以使用了。
output: './output',
helpers: {
WebDriver: {
url: 'https://api.int.br.internal',
browser: 'chrome',
smartWait: 10000,
waitForTimeout: 10000,
timeouts: {
script: 10000,
pageLoad: 60000,
implicit: 10000,
},
desiredCapabilities: {
chromeOptions: {
args: [
'--no-sandbox',
'--disable-gpu',
'--disable-dev-shm-usage',
'--ignore-certificate-errors',
],
excludeSwitches: ['enable-automation'],
},
},
restart: false,
windowSize: '1600x1200',
},
AssertWrapper: {
require: 'codeceptjs-assert',
},
},
我是来自 Selenium/Java 背景的 Docker 和 CodeceptJs 的超级新手,我正在尝试从 docker 容器中 运行 我们的 CodeceptJs 测试。但是,我们收到此错误,但不确定如何绕过它。
我尝试按照 here 使用 java -jar selenium.jar
在另一个 window 下启动 Selenium 驱动程序(它不在我的项目文件夹下),但同样的问题仍然存在。
如果我们在 CodeceptJs 之外使用原始 Selenium,这里的大多数答案都是关于为 ChromeDriver 实例设置一些选项,但是 ChromeDriver 配置似乎是在 CodeceptJs 框架内从我这里抽象出来的,所以我觉得我现在有点卡住了请
这是我们完整的Docker文件和bash脚本
FROM docker.br.hmheng.io/base-ubuntu:java_1.8.0_74-b02
ENV DEBIAN_FRONTEND noninteractive
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - \
&& sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' \
&& apt-get clean \
&& apt-get update \
&& apt-get install curl -y \
dpkg
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y \
libgconf-2-4 \
libexif12 \
supervisor \
netcat-traditional \
google-chrome-stable \
git \
chromium-chromedriver \
nodejs \
xorg \
xvfb \
dbus-x11 \
xfonts-100dpi \
xfonts-75dpi \
xfonts-scalable \
xfonts-cyrillic \
dos2unix \
--no-install-recommends
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
ENV HOST selenium
RUN export JAVA_HOME=/usr/lib/jvm/java-8-oracle \
&& export HOST=selenium
COPY ./update-catalog-admin/tests/e2e/scripts/start.sh start.sh
RUN chmod 777 start.sh \
&& dos2unix start.sh
和
#!/bin/bash
echo "[INFO] Starting X server"
Xvfb :0 -screen 0 1600x1200x24 2>&1 >/dev/null &
export DISPLAY=:0
cd /project
node -v
npm -v
ls -lsa
npm install
npm test
运行 通过这个命令:
docker run -u 500:500 -v /etc/passwd:/etc/passwd:ro -v $(pwd)/update-catalog-admin/tests/e2e:/project:rw -v /dev/shm:/dev/shm --shm-size=4g update-catalog-e2e-container sh start.sh
还有这个codecept.conf.js
exports.config = {
output: './output',
helpers: {
WebDriver: {
url: 'https://api.int.br.internal',
browser: 'chrome'
},
AssertWrapper: {
require: 'codeceptjs-assert',
},
},
include: {
I: './steps_file.js',
createNotificationPage: "./pages/create_notifications.page.js",
},
mocha: {},
bootstrap: null,
teardown: null,
hooks: [],
gherkin: {
features: './features/*.feature',
steps: ['./step_definitions/steps.js']
},
plugins: {
wdio: {
enabled: true,
services: ['selenium-standalone']
// additional config for service can be passed here
},
screenshotOnFail: {
enabled: true
},
pauseOnFail: {},
retryFailedStep: {
enabled: true
},
},
tests: './*_test.js',
name: 'codeceptjs_webdriver'
}
非常感谢。
我们找到了在 codecept.cong.js
文件中设置 ChromeOptions
的位置,现在可以使用了。
output: './output',
helpers: {
WebDriver: {
url: 'https://api.int.br.internal',
browser: 'chrome',
smartWait: 10000,
waitForTimeout: 10000,
timeouts: {
script: 10000,
pageLoad: 60000,
implicit: 10000,
},
desiredCapabilities: {
chromeOptions: {
args: [
'--no-sandbox',
'--disable-gpu',
'--disable-dev-shm-usage',
'--ignore-certificate-errors',
],
excludeSwitches: ['enable-automation'],
},
},
restart: false,
windowSize: '1600x1200',
},
AssertWrapper: {
require: 'codeceptjs-assert',
},
},