Jasmine 页面对象-承诺处理-错误“;无法读取属性';提交';“未定义”的定义;
我试图在登录屏幕中点击提交按钮,只有当按钮文本显示“下一步”时。在下面的最后一行中,我得到了一个错误-“无法读取未定义的属性'submit'。我认为我没有正确解析页面对象中的承诺。如果有人能帮我提出解决方案,我将不胜感激Jasmine 页面对象-承诺处理-错误“;无法读取属性';提交';“未定义”的定义;,jasmine,protractor,Jasmine,Protractor,我试图在登录屏幕中点击提交按钮,只有当按钮文本显示“下一步”时。在下面的最后一行中,我得到了一个错误-“无法读取未定义的属性'submit'。我认为我没有正确解析页面对象中的承诺。如果有人能帮我提出解决方案,我将不胜感激 //Login Page object var LoginPage = function () { this.email = element(by.model('loginCtrl.username')); this.password = element(b
//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();
}
});
在这种情况下,当在
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();
}
});
}
你期望这个是什么?因为在这种情况下,它没有定义。