我正在使用夜视检查页面上的表格单元格是否包含大于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;
}
})
...
但由于某些原因,这让我心疼。 :(
我的问题是:有更好的方法吗?
答案 0 :(得分:0)
nightwatch 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!");
})
在这里由beatfactor提供的答案:https://github.com/nightwatchjs/nightwatch/issues/1002#issuecomment-223240103