我正在使用夜巡来检查页面上的表格单元格是否包含大于 0 的数字。
为此,我必须使用节点断言包:
const assert = require('assert');
所以首先,我获取表单元格元素文本,在回调中我将其解析为 int 并使用 assert 检查它的值:
...
.getText("//table[@id='topology-summary-table']/tbody/tr/td[7]", function(el){
assert(parseInt(el.value) > 0, "Num Executors == 0!");
}).end()
...
唯一的问题是,如果 assert 抛出 AssertionError(即:如果表单元格中的数字为 0),则测试将停止,并且永远不会调用.end()
,从而使浏览器进程保持打开状态并徘徊。不理想。
我通过执行以下操作来绕过这一事实:
...
.getText("//table[@id='topology-summary-table']/tbody/tr/td[7]", function(el){
try {
assert(parseInt(el.value) > 0, "Num Executors == 0!");
} catch(e){
this.end();
throw e;
}
})
...
但出于某些原因,这让我感觉很糟糕。 :(
我的问题是:有没有更好的方法?
夜巡 API 实际上扩展了断言 api,因此无需require
它。
相反,请执行此操作:
.getText("//table[@id='topology-summary-table']/tbody/tr/td[7]", function(el){
this.assert.ok(parseInt(el.value) > 0, "Num Workers == 0!");
})
比特因子在这里提供的答案是:https://github.com/nightwatchjs/nightwatch/issues/1002#issuecomment-223240103