我的 nightwatch.js 测试未在 CentOS 的 Chrome 无头中运行

Dbs*_*hah 3 automation centos nightwatch.js google-chrome-headless

我使用 Nightwatch 1.0.18 版运行 nightwatch.js 测试,它在 Windows 环境中工作,但是当我在安装 Xvfb 后在 centOS 中运行它时,我发现以下错误。

 Error while running .navigateTo() protocol action: invalid session id

 Error while running .locateMultipleElements() protocol action: invalid session id

 Error while running .locateMultipleElements() protocol action: invalid session id
Run Code Online (Sandbox Code Playgroud)

这是我的 nightwatch.json 文件代码:

{
  "src_folders": [
    "./tests"
  ],
  "output_folder": "./reports",
  "custom_commands_path": "./custom_commands",
  "custom_assertions_path": "",
  "test_workers": false,
  "webdriver": {
    "start_process": true
  },
  "test_settings": {
    "default": {
      "webdriver": {
        "port": 9515,
        "server_path": "./node_modules/chromedriver/lib/chromedriver/chromedriver",
        "cli_args": [
          "--log",
          "debug"
        ]
      },
      "skip_testcases_on_fail": true,
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "chromeOptions": {
          "args": [
            "headless",
            "no-sandbox",
            "disable-gpu"
          ]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我是否因为它在 windows 环境中运行而错过了在 centOS 环境中运行我的测试的东西?

小智 5

我在 Nightwatchjs 和 npm chomedriver 设置上遇到了同样的问题。

背景: 一切正常,直到我最近在我的系统上更新了 Chromium。除了原始帖子中的错误外,详细日志记录还显示:

{ 
  message: 'unknown error: Chrome failed to start: exited abnormally',
  error: [ 
    "(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.)',
    '(Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.9.0-8-amd64 x86_64)'
  ],
}
Run Code Online (Sandbox Code Playgroud)

之后下载独立chromedriver(2.46.628388),以配合我的Chromium版本(72.0.3626.69),它仍然显示了同样的错误。

解决方案: 我最终下载了旧版本的 Chromium (71.0.3578.127) 并将 chromeOptions.binary 设置为 Chromium 71 二进制文件的新路径。我还必须在 chromeOptions.args 中包含“无沙盒”。

这是上面提到的网站的片段:

下载旧版本的 Chrome / Chromium

假设您想要一个用于调试目的的 Chrome 44 版本。Google 不提供旧版本,因为它们没有最新的安全修复程序。

但是,您可以获得 Chromium 44.x 的构建版本,它应该与稳定版本基本匹配。以下是您找到它的方法: