我正在使用nightwatch.js,我有一个页面文件,如下所示:
sections: {
table: {
selector: '.sr-filterable-data-layout--collection',
elements: {
header: {
selector: '.sr-collection--header'
},
body: {
selector: 'sr-collection--body'
}
}
},
filters: {
selector: '.sr-filterable-data-layout--filters',
elements: {
filterByName: {
selector: '#filter-name'
}
}
},
actions: {
selector: '.sr-entities-actions',
elements: {
addButton: {
selector: '.mdi-content-add'
}
}
}
},
commands: [{
editEntity(options) {
return this.section.body();
},
verifyPageload() {
return (
this.section.filters.waitForElementVisible('@filterByName')
.section.table.waitForElementVisible('@header')
// .section.actions.waitForElementVisible('@addButton')
.assert.title(this.props.title)
);
}
}
]每个元素上的断言都是独立的,但是当我试图像这样链接断言时:
this.section.filters.waitForElementVisible('@filterByName')
.section.table.waitForElementVisible('@header')如果出现以下错误,它将失败:
✖ TypeError: Cannot read property 'waitForElementVisible' of undefined任何关于如何将这些断言链接在一起的帮助都将不胜感激。
发布于 2017-05-03 11:49:43
而这里的评论则提出了规避这一问题的方法。在第一次调用返回页面的根之后,通过链接.parent,我终于偶然发现了在不同部分上链接多个操作的方法,而不是像这样的部分:
verifyPageload() {
this.section.table
.waitForElementVisible('@header')
.parent.section.filters.waitForElementVisible('@filterByName')
.parent.section.actions.waitForElementVisible('@addButton')
.assert.title(this.props.title);
return this;
}发布于 2017-04-30 15:38:17
您不能这样做,因为section是页面属性,而waitForElementVisible则返回对客户端实例(“浏览器”)的引用,而不是对页面的引用。
只要拆分命令,就没有理由将它们链接起来。
另外,return ()块在这里是多余的,只需直接返回断言结果:
verifyPageload() {
// waitForStuff...
return this.assert.title(this.props.title)
}https://stackoverflow.com/questions/43708032
复制相似问题