【发布时间】:2022-06-10 22:09:14
【问题描述】:
我目前正在评估 Selenium 与 GitLab CI 的结合,作为我们网站的测试工具。这是我目前的.gitlab-ci.yml:
variables:
GIT_STRATEGY: clone
GIT_DEPTH: 0
stages:
- tests
test:
stage: tests
image: node:latest
tags:
- linux
before_script:
- apt-get update
- apt-get install -y chromium
- npm install -g selenium-side-runner
- npm install -g chromedriver
script:
- selenium-side-runner My-UI-Test.side
我收到以下错误:
FAIL ./DefaultSuite.test.js
● Test suite failed to run
WebDriverError: unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/chromium is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
at Object.throwDecodedError (../../../../../../usr/local/lib/node_modules/selenium-side-runner/node_modules/selenium-webdriver/lib/error.js:550:15)
at parseHttpResponse (../../../../../../usr/local/lib/node_modules/selenium-side-runner/node_modules/selenium-webdriver/lib/http.js:560:13)
at Executor.execute (../../../../../../usr/local/lib/node_modules/selenium-side-runner/node_modules/selenium-webdriver/lib/http.js:486:26)
我搜索了错误消息DevToolsActivePort file doesn't exist,似乎 Chrome 不喜欢以 root 权限运行。许多答案建议使用--no-sandbox 或--disable-dev-shm-usage 标志。但这些是 Chrome 标志,因为我没有直接调用 Chrome,所以我不能使用它们。有问题的网站也是从不同的项目部署的,所以我没有代码可以使用。我唯一可以更改的文件是My-UI-Test.side 和.side.yaml。
【问题讨论】:
-
But those are Chrome flags, and since I'm not calling Chrome directly您可以使用 selenium 添加命令行选项 webdriver api 用于 chrome 选项或 specify them in side。如果您在无头(无屏幕)环境中运行 chrome,您可能还需要添加无头参数。 -
@sytech 我尝试了
selenium-side-runner -c "goog:chromeOptions.args=[no-sandbox,disable-dev-shm-usage,headless]" My-UI-Test.side,但得到了错误Target browser must be a string, but is <undefined>; did you forget to call forBrowser()?。我在.side.yaml中有浏览器名称,还尝试将其作为-c选项,但没有任何改变。
标签: selenium selenium-chromedriver gitlab-ci selenium-side-runner