我试图点击登录屏幕中的提交按钮,仅当按钮文本显示"下一步"。在下面的最后一行中,我收到错误 - "无法读取属性'提交'未定义"。我认为我没有在页面对象中正确地解决承诺。如果有人能帮忙提出解决方案,我会很感激。
//Login Page object
var LoginPage = function () {
this.email = element(by.model('loginCtrl.username'));
this.password = element(by.model('loginCtrl.password'));
this.submit = element(by.css('[ng-click="loginCtrl.login()"]'));
this.get = function(){
browser.get('/#/login');
};
this.login = function () {
this.email.clear();
this.email.sendKeys(browser.params.login.user);
this.submit.getText().then(function (text) {
if (text == "Next") {
//***ERROR below.
//***Cannot read property 'submit' of undefined
this.submit.click();
}
});
答案 0 :(得分:3)
在这种情况下,当then()
函数内部this
不再指向您的页面对象时。一种常见的方法是在外部作用域中创建对页面对象的引用:
this.login = function () {
this.email.clear();
this.email.sendKeys(browser.params.login.user);
var self = this;
this.submit.getText().then(function (text) {
if (text == "Next") {
self.submit.click();
}
});
}