我在Nightwatch中编写一个脚本来测试页面上的特定元素。脚本可能正在测试页面中不存在该元素的URL,在这种情况下,我希望脚本在没有记录任何失败的情况下结束测试。
但是,我似乎无法在不调用失败的情况下尽早中止测试。是否有任何方法可以在通行证上使用Nightwatch测试中止?以下是我参与的代码的一部分:
//End test if pagination is not present
'Pagination Present' : function (browser) {
browser
.execute(function() {
return document.querySelectorAll("ul[class='pagination']").length;
},
function(count){
if (count.value == 0) {
browser.assert.equal(count.value, 0, "There is no pagination on this page.");
browser.end();
}
})
},
调用browser.end();关闭浏览器,但它会立即重新打开并继续测试。每个案例都失败了,因为给定页面上不存在分页。我想在browser.assert.equal通过后立即结束测试。有没有办法这样做?
答案 0 :(得分:0)
您可以使用try / catch。
我在某些测试中遇到了同样的问题,我已经让它跳过这样的断言:你试着检查一下,但是如果你找不到这个元素,而不是没有通过测试,我只是在控制台中显示一条消息并退出整个测试:
'Test product\'s UPSs' : function (browser) {
try {
browser.assert.elementPresent('@someElement');
}
catch(err) {
console.log('this product has no Special features! Skipping');
process.exit();
}
}
如果你有进一步的测试,你知道他们不会失败,你想继续他们,只需省略process.exit()函数。虽然它可能不是最安全的方法,但至少它完成了工作。