首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义的类属性中的Javascript ES6常量

未定义的类属性中的Javascript ES6常量
EN

Stack Overflow用户
提问于 2018-02-08 08:57:48
回答 1查看 116关注 0票数 1

我正在用Selenium在量角器中进行自动e2e测试。我有一个类,我想在其中存储一个属性,以便更好地维护我的测试。

下面是我们要讨论的课程:

代码语言:javascript
复制
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'));
    }
}

但是,当在同一个类中调用我的一个方法时:

代码语言:javascript
复制
//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();

调试告诉我“没有使用locator: by.css_sr(”:sr#header“)找到的元素”,我试着调用this._JOBBASEPATH.click(),_JOBBASEPATH是未定义的。

我找到了一些解决办法,比如创建getters/setter或方法来做完全相同的事情,但是我想了解为什么这不起作用,尤其是当我在其他类中成功地实现了它的时候:

代码语言:javascript
复制
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,预先感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-08 11:37:16

尝试将this.getIndex()替换为0

代码语言:javascript
复制
this._JOBBASEPATH = element(by.css_sr('iris-app::sr #jobs'))
       .all(by.css_sr('::sr iris-job'))
       .get(0);

如果上面的代码有效,那么问题来自于this.getIndex()

如果不工作,问题来自element(...).all(...),它找不到任何元素,因此get(0)返回未定义的元素。

手动检查定位器是否可以找到元素?如果是,请添加一些睡眠以等待页面加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48681361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档