在Jenkins / Ubuntu16中的NightWatch Selenium Socket Hangup

时间:2017-04-06 19:58:26

标签: selenium jenkins selenium-chromedriver nightwatch.js xvfb

问题:

我们正在Jenkins中运行NightWatch测试,偶尔会出现此错误:

[0;31mConnection refused! Is selenium server started?
[0m[0;90m{ Error: socket hang up
    at createHangUpError (_http_client.js:253:15)
    at Socket.socketCloseListener (_http_client.js:285:23)
    at emitOne (events.js:101:20)
    at Socket.emit (events.js:188:7)
    at TCP._handle.close [as _onclose] (net.js:501:12) code: 'ECONNRESET' }[0m

其他地方推荐的修复已经存在: export DBUS_SESSION_BUS_ADDRESS=/dev/null

这就是我们运行测试的方式:

sudo npm install selenium-standalone -g

selenium-standalone install --version=3.0.1 --baseURL=https://selenium-release.storage.googleapis.com --drivers.chrome.version=2.28 --drivers.chrome.baseURL=https://chromedriver.storage.googleapis.com --basePath=bin 

sudo npm install nightwatch@0.9.13 -g && nightwatch --tag sanity --retries 1 --suiteRetries 1 

重建作业通常会成功运行测试。 的软件'版本:

Chrome:57

Chrome驱动程序:2.28

Selenium:3.0.1

NightWatch:0.9.13(如果最新版本有错误但没有变化,则从0.9.14下降。)

詹金斯:1.6倍

Ubuntu:16.04

使用xvfb

错误情景

测试运行正常,直到大约2周前,当我们切换到Ubuntu 16时,但那天它也开始在Ubuntu 14上发生。

当我们刚刚开始使用新的Jenkins奴隶(在AWS云上)时,尤其会发生这种情况。在测试运行的最初阶段会发生更多的事情,但有时也会在运行过程中发生。

我会感激任何帮助或指示!

2 个答案:

答案 0 :(得分:0)

昨天我遇到同样的问题。 也许你可以改变Chrome的版本。 例如Chrome:55。

当我更改了版本的铬硒

答案 1 :(得分:0)

我们遇到了类似的问题,但我们的错误消息更具体:

Selenium is already running on port ####. Or some other service is.

解决方案是使用Jenkins Port Allocator Plugin为环境变量分配可用的端口号。

从那里,我们可以在我们的globals.js中设置这样的端口号(在本地运行时默认为4444):

portNumber: process.env.PORT_NUMBER || 4444,

在我们的nightwatch.conf.js文件中,我们使用lodash模板替换nightwatch.json中的值,如下所示:

fs = require('fs'),
_ = require('lodash'),
template = _.template(fs.readFileSync('./nightwatch.json', 'utf8')),
settingsString,
settings;

settingsString = template({
    portNumber: globals.portNumber
});

settings = JSON.parse(settingsString);
module.exports = settings;

最后,在我们的nightwatch.conf文件中,我们将所有端口引用的值设置为:

"<%= portNumber %>"