我在Nightwatch中实现Page Object时遇到问题。假设我有一个登录方案。我需要滚动到元素 - 我正在使用thar执行函数。
module.exports = {
'Login' : function (browser) {
browser.url(this.launchUrl)
.setValue('input[name=username]', 'admin')
.setValue('input[name=password]', 'password')
.execute(function () {
document.querySelector('input[type=submit]').scrollIntoView();
}, [])
.click('input[type=submit]');
browser.end();
}
}
我想将此登录代码重构为Page Object
module.exports = {
url: function() {
return this.api.launchUrl;
},
commands: [scrolling],
elements: {
usernameField: {
selector: 'input[name=username]'
},
passwordField: {
selector: 'input[name=password]'
},
submit: {
selector: 'input[type=submit]'
}
}
};
我想'隐藏'这个执行命令并将其打包成命令,如:
var scrolling = {
scroll: function(){
return this.execute(function () {
document.querySelector(input[type=submit]').scrollIntoView();
}, []);
}
};
不幸的是,似乎执行命令不适用于Page Object。
当我想使用Page Object时,如何通过执行JavaScript代码来解决这个问题?我该如何封装它?
答案 0 :(得分:1)
答案很简单 1)选择器中缺少引号。 2)在Object Pattern中使用execute(),需要使用this.api:
运行它this.api.execute(function () {
document.querySelector('input[type=submit]').scrollIntoView();
}, []);
答案 1 :(得分:0)
找到了答案
ForthStCheck:function(){
this.api.execute('scrollTo(0,500)')
this.waitForElementVisible('@forthStationPlayBtn',5000)
}