使用Nightwatch我创建了一个看起来很像这个
的页面对象module.exports = {
url() {
return `${this.api.launchUrl}/mypage`;
},
sections: {
main: {
selector: '.foo',
elements: {
bar: '[name="baz"]',
},
},
},
};
在我的测试before()
函数中,我像这样调用它
module.exports = {
before(browser) {
const page = browser.page.buy.myPageObject();
page.navigate();
page.sections.main.waitForElementVisible('@bar');
},
(...)
};
我完全沉默了。没有记录任何错误,没有打开浏览器窗口,一段时间后该过程只是静默退出。
现在,如果我将页面对象更改为不使用部分:
module.exports = {
url() {
return `${this.api.launchUrl}/mypage`;
},
//sections: {
// main: {
// selector: '.foo',
elements: {
bar: '[name="baz"]',
},
// },
//},
};
并将测试中的相应行更改为page.waitForElementVisible('@bar');
我的测试运行正常。
我无法在docs中发现除了url()
之外我无法使用sections
,所以我的问题是:我在这里遗漏了一些明显的东西?这是我不打算做的事吗?
如果我做错了,我至少会期待某种错误信息。周围的代码中没有语法错误,它被eslint成功解析。
答案 0 :(得分:0)
进一步挖掘表明实际问题是无法在部分上使用命令。
对于github上标记为增强的内容存在一个未解决的问题。
长话短说,解决方法是
Base64 encoder = new org.apache.commons.codec.binary.Base64();
System.out.print(new String(encoder.encode(digestedPwdBytes)) +":");
现在这不是“功能等效”,因为它只是等待该部分存在,但是没关系,测试可以检查输入是否实际存在。之前等待的主要目的是等待页面呈现。