一般是夜视仪和js的新手,我正在努力弄清楚如何使用pom模式验证网址。我知道这是错的。任何建议都非常感谢,包括我rtfm的有用链接,因为我正在努力寻找有力的pom nightwatch示例。
test.js
module.exports = {
"tags": ['sanity'],
'confirm navigation to example.com' : function (client) {
var landingPage = client.page.landing();
landingPage.navigate();
landingPage.confirmOnLandingPage();
client.end();
}
};
page.js
var landingCommands = {
navigate:function(){
url: 'example.com/'
},
confirmOnLandingPage:function(){
this.expect.element('body')
.to.be.present.before(1000)
.url(function(result)
{
this.assert.equal(result.value, 'example.com/', 'On Landing Page.')
});
}
}
正在运行:确认导航到example.com
✖TypeError: this.expect.element(...)。to.be.present.before(...)。url不是 功能 在Page.confirmOnLandingPage(/Users/Home/Development/NWQA/pages/page.js:9:10) 在Object.confirm导航到example.com(/Users/Home/Development/NWQA/tests/test.js:7:21)失败:1次错误(18ms)
答案 0 :(得分:2)
运行.expect
后,您打破Nightwatch命令链并启动Expect.js链,以便在调用this.expect.element('body').to.be.present.before(1000)
后获得Expect.js对象,而不是Nightwatch浏览器对象。
要修复,只需启动新链并将this.url
调用更改为this.api.url
,因为页面对象中没有url()
:
confirmOnLandingPage: function(){
this.expect.element('body').to.be.present.before(1000);
this.api.url(function(result)
{
this.assert.equal(result.value, 'example.com/', 'On Landing Page.')
});
}
<强>更新强>
我刚注意到你错误地为你的页面对象声明了URL。 navigate
是内部函数,您只需要提供url
属性:
var landingCommands = {
url: 'example.com/',
...
};