我在我的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;
在我的规格文件中,我使用了以下内容,
FuncLib.PermissionExc();
当我执行代码时,我会遇到错误" typeError:无法读取未定义的属性'msgtext'。有人可以告诉我我要去哪里出错吗?请建议。
这是一个著名的JS关闭问题。您无法在嵌套功能中访问此。因为的范围您使用的没有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);
}
也适用于他人