我用硒在量角器中进行自动e2e测试。
我有一个类,我想在其中存储一个属性,以便更好地维护我的测试。
下面是所讨论的课程:
export class Tab {
constructor(job) {
this._criterionList = [];
this._job = job;
this._JOBBASEPATH = element(by.css_sr('iris-app::sr #jobs'))
.all(by.css_sr('::sr iris-job')).get(this.getIndex());
this._ACTIONMENUBASEPATH = this._JOBBASEPATH
.element(by.css_sr('::sr #header'))
.element(by.css_sr('::sr iris-floating-menu'));
this._JOBFOOTERBASEPATH = this._JOBBASEPATH
.element(by.css_sr('::sr job-footer'));
this._RESULTBASEPATH = this._JOBBASEPATH
.element(by.css_sr('::sr #result'));
}
}
但是,在同一个类中调用我的一个方法时:
//Method in Tab class, this._JOBBASEPATH is undefined
getQueryConditionButton(){
return this._JOBBASEPATH
.element(by.css_sr('::sr #header'))
.element(by.css_sr('::sr #condition'));
}
// _JOBBASEPATH is undefined
tab.getQueryConditionButton().click();
Debug告诉我“使用locator:by.css\u sr(“::sr#header”)”,找不到元素,
我试着打这个电话_JOBBASEPATH。单击(),则未定义\u JOBBASEPATH。
我发现了一些解决方法,比如创建getter/setter或方法,做完全相同的事情,但我想了解
为什么这不起作用,尤其是当我在其他类中成功实现它时,比如:
export class DetailField {
constructor(tab) {
this._tab = tab;
this._displayFieldList = [];
this._basePath = element(by.css_sr('iris-app::sr #jobs'))
.all(by.css_sr('::sr iris-job')).get(this._tab.getIndex())
.element(by.css_sr('::sr #customizer'))
.element(by.css_sr('::sr #detailField'));
}
}
//Method in DetailField class working perfectly
getLoadButton(){
return this._basePath
.element(by.css_sr('::sr #loadButton'));
}
//works
getLoadButton().click();
注意:getIndex()调用为两个类返回相同的值:0
提前谢谢