使用 POM Nightwatch 确认 URL
Confirm URL using POM Nightwatch
一般来说,nightwatch 和 js 是新手,我正在努力弄清楚如何使用 pom 模式验证 url。我知道这是错误的。非常感谢任何建议,包括对我有用的 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.')
});
}
}
Running: confirm navigation to example.com
✖ TypeError:
this.expect.element(...).to.be.present.before(...).url is not a
function
at Page.confirmOnLandingPage (/Users/Home/Development/NWQA/pages/page.js:9:10)
at Object.confirm navigation to example.com (/Users/Home/Development/NWQA/tests/test.js:7:21)
FAILED: 1 errors (18ms)
在 运行 .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/',
...
};
一般来说,nightwatch 和 js 是新手,我正在努力弄清楚如何使用 pom 模式验证 url。我知道这是错误的。非常感谢任何建议,包括对我有用的 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.')
});
}
}
Running: confirm navigation to example.com
✖ TypeError: this.expect.element(...).to.be.present.before(...).url is not a function at Page.confirmOnLandingPage (/Users/Home/Development/NWQA/pages/page.js:9:10) at Object.confirm navigation to example.com (/Users/Home/Development/NWQA/tests/test.js:7:21)FAILED: 1 errors (18ms)
在 运行 .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/',
...
};