Nightwatch Selenium"插座挂断"

时间:2017-01-05 14:35:53

标签: java selenium continuous-integration nightwatch.js

在Chrome中运行Nightwatch测试CI。有时(在5个版本中大约一次)我在其中一个测试中遇到以下错误。在此之前的每个测试工作正常。

我有最新的Chromedriver和Selenium独立服务器。

我认为问题是Selenium服务器在请求中间崩溃,我很难知道原因。

Error retrieving a new session from the selenium server

Connection refused! Is selenium server started?
{ Error: socket hang up
    at createHangUpError (_http_client.js:254:15)
    at Socket.socketCloseListener (_http_client.js:286:23)
    at emitOne (events.js:101:20)
    at Socket.emit (events.js:188:7)
    at TCP._handle.close [as _onclose] (net.js:498:12) code: 'ECONNRESET' }

此处还有nightwatch.json照顾硒的部分内容。

 "selenium": {
    "start_process": true,
    "server_path": "scripts/Nightwatch/selenium-server-standalone-3.0.1.jar",
    "log_path": "app/E2E/reports/selenium",
    "port": 4444,
    "cli_args": {
      "webdriver.chrome.driver": "scripts/Nightwatch/chromedriver"
    }
  }

任何想法为什么Selenium崩溃以及如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

在Codeship上遇到与selenium / chromedriver完全相同的问题。我尝试将硒降级到2.53.1无济于事。详细记录显示没有有用的信息,只是selenium服务器突然没有在我们的测试中随机启动新会话。

似乎有用的是在我们的测试命令中添加以下内容:

# Prevent chrome deadlock
export DBUS_SESSION_BUS_ADDRESS=/dev/null

问题在这里描述: https://github.com/SeleniumHQ/docker-selenium/issues/87

看起来某些docker容器存在问题,这可以解释它在CI上发生的情况,而本地工作正常。

答案 1 :(得分:3)

在nightwatch.json中未正确配置chrome时,会显示相同的异常消息(每次运行构建时)。具体而言,它需要提供“--no-sandbox”选项,例如

"chrome": {
  "desiredCapabilities": {
  "browserName": "chrome",
  "javascriptEnabled": true,
  "acceptSslCerts": true,
  "chromeOptions": {
    "args" : ["--no-sandbox"]
  }
}

答案 2 :(得分:1)

更新我的主机文件条目可解决此问题。 固定: 删除所有主机文件条目,并将以下条目添加到主机文件中。 127.0.0.1 localhost

答案 3 :(得分:0)

我使用了以下args表示法,拒绝了Connection并使用xvfb作为解决方法。

chrome: {
  silent: false,
  retry_attempts: 1,
  desiredCapabilities: {
    browserName: 'chrome',
    javascriptEnabled: true,
    acceptSslCerts: true,
    chromeOptions: {
      args: [
        '--disable-gpu --no-sandbox --headless --window-size=1920,1080 --verbose'
      ]
    }
  }
},

现在一位同事发现args应该是分开的,没有破折号:

      args: [
        'disable-gpu', 'no-sandbox', 'headless', 'window-size=1920,1080', 'verbose'
      ]

即使没有xvfb也没有错误 - 对我有用!