【问题标题】:My nightwatch.js tests not runs in Chrome headless of CentOS我的 nightwatch.js 测试不能在 CentOS 的无头 Chrome 中运行
【发布时间】:2019-02-04 07:10:44
【问题描述】:

我使用 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

这是我的 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"
          ]
        }
      }
    }
  }
}

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

【问题讨论】:

  • 这里相同,配置不同,但错误相同,特别是`运行.navigateTo()协议操作时出错:会话ID无效`
  • 我有更多的运气让chromedriver 作为独立而不是节点模块运行,如果您希望我一步一步地发布,请告诉我。

标签: automation centos nightwatch.js google-chrome-headless


【解决方案1】:

我在使用 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)'
  ],
}

downloading the standalone chromedriver (2.46.628388) 与我的 Chromium 版本 (72.0.3626.69) 匹配之后,它仍然显示相同的错误。

解决方案: 我最终选择了downloading an older version of Chromium (71.0.3578.127) 并将 chromeOptions.binary 设置为 chromium 71 二进制文件的新路径。我还必须在 chromeOptions.args 中包含“无沙盒”。

这是来自上述网站的 sn-p:

下载旧版本的 Chrome / Chromium

假设您想要构建 Chrome 44 以进行调试。 Google 不提供旧版本,因为它们没有最新的安全修复程序。

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

【讨论】:

  • 我也做了同样的事情,虽然我刚刚下载了 google-chrome (v.73) 和 chromedriver 2.46。即使它们应该兼容,我仍然遇到问题。解决方案是在 chromeOptions args 中添加 no-sandbox
【解决方案2】:

升级到最新版本的 chromedriver 为我解决了这个问题。你可以在这里找到最新版本; https://www.npmjs.com/package/chromedriver

【讨论】:

    【解决方案3】:

    在我的情况下,当该错误发生时:

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

    我将以下代码添加到.travis.yml

    addons:
      chrome: stable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-12
      • 2020-03-07
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多