Nightwatch 中止测试通过

Nightwatch Abort Test on Pass

我正在 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 通过后立即结束测试。有什么办法吗?

您可以使用 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() 函数即可。虽然这可能不是最安全的方法,但至少可以完成工作。