我在我的PO文件中创建了一个函数,如下所示
'use strict';
var FunLib = function(){
this.Msgtext = element(by.css('.layout-row.flex-gt-md-66.flex'));
this.AltEle = element(by.css('[ng-show="alert"]'));
this.ExcMsg1 = "YOU ARE LACKING ONE OR MORE..."
//Function Button Click
this.ButtonClick = function(ButtonName){
this.ButtonName = ButtonName;
this.Button = element(by.buttonText(ButtonName));
this.Button.click();
};
//Function to handle exception of Permissions
this.PermissionExc = function() {
this.AltEle.isDisplayed().then(function(IsPresent){
console.log(IsPresent);
if (IsPresent) {
this.Msgtext.getText().then(function(text) {
console.log(text);
var Message = text;
if (Message == this.ExcMsg1) {
this.ButtonClick('Close');
}
});
}
});
browser.sleep(2000);
}
};
module.exports = FunLib;
在我的spec文件中,我使用它如下,
FuncLib.PermissionExc();
当我执行我的代码时,我收到错误" TypeError:无法读取属性' Msgtext'未定义的"。 谁能告诉我哪里出错了?请建议。
答案 0 :(得分:1)
这是一个着名的js闭包问题。您无法在嵌套函数中访问this.Msgtext。因为您使用的 this 的范围没有Msgtext
this.PermissionExc = function() {
var _this = this;
this.AltEle.isDisplayed().then(function(IsPresent){
console.log(IsPresent);
if (IsPresent) {
_this.Msgtext.getText().then(function(text) {
console.log(text);
var Message = text;
if (Message == this.ExcMsg1) {
this.ButtonClick('Close');
}
});
}
});
browser.sleep(2000);
}
同样适用于其他人