簡體   English   中英

類屬性中的Javascript ES6常量未定義

[英]Javascript ES6 constants in class property undefined

我正在使用Selenium在量角器中進行自動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();

調試告訴我“未使用定位器找到任何元素:by.css_sr(“ :: sr #header”)“,我嘗試調用此。_JOBBASEPATH.click(),並且_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預先感謝

嘗試將this.getIndex()替換為0

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)返回未定義。

手動檢查定位器以查看是否可以找到元素? 如果是,請增加一些睡眠以等待頁面加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM