在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崩溃以及如何解决这个问题?
答案 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也没有错误 - 对我有用!