我有以下的守夜人测试:
module.exports = {
'Set Initial Dataset' : function (browser) {
browser
.url('http://localhost/nightwatch/load-initial-dataset')
.end()
}
}
当我执行它时,浏览器被打开并且加载了URL,但是当加载结束时,它不会关闭浏览器以开始下一个测试。
测试工作1个月前...我将夜视仪更新到了nigthwatch最新版本(v0.9.8),下载了selenium-server-standalone-3.0.1.jar
,chromedriver 2.25和Chrome 54.0.2840.87
我的Nigthwatch.js是
module.exports = {
src_folders: ['./tests'],
output_folder: './results',
selenium: {
start_process: true,
server_path: './selenium-server-standalone-3.0.1.jar',
log_path: './results',
host: '127.0.0.1',
port: 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./osx/chromedriver"
}
},
test_settings: {
default: {
waitForConditionPollInterval: 1,
selenium_host: '127.0.0.1',
selenium_port: 4444,
screenshots: {
enabled: true,
path: './results/screenshots'
},
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true
}
}
}
};
我尝试启动此测试并遇到同样的问题:https://github.com/nightwatchjs/nightwatch/blob/master/examples/tests/google.js(浏览器在网址上保持打开状态,终端没有任何内容)
当我使用safari进行测试时,我没有特别的问题。
THX
答案 0 :(得分:1)
乍一看,您的测试看起来并没有真正执行任何断言,因此实际上并没有“测试”。为了任何东西。这可能会使测试运行员感到困惑。
我的另一个理论是waitForConditionPollInterval
设置太低了。 1毫秒似乎有点矫枉过正。
从这里可以做两件事:
示例:
module.exports = {
'Set Initial Dataset' : function (browser) {
browser
.url('http://localhost/nightwatch/load-initial-dataset')
.assert.title('Some Title')
.end()
}
}
waitForConditionPollInterval
设置,看看是否有帮助。如果确实如此,请尝试将其设置为更加理智,例如100毫秒,并检查测试是否仍然挂起。答案 1 :(得分:0)
我的经验是,在未执行验证时,selenium会挂起。您没有获得任何输出,因为导航不是"验证"步。
虽然您可以检查页面标题以确认您已经点击了正确的网址,但我认为这有点脆弱。如果页面标题因任何原因发生更改,即使您导航到的网址正确,也会导致测试失败。要测试您是否正在使用正确的网址,请尝试使用.urlContains();
。
示例:
module.exports = {
'Set Initial Dataset' : function (browser) {
browser
.url('http://localhost/nightwatch/load-initial-dataset')
.verify.urlContains('/load-initial-dataset')
.end();
}
}
您在.end();
之后也错过了分号,这可能不会告诉守夜人测试用例实际上是完整的。
也许也试试。