2017-12-28 5 views
2

Hallo ich bin neu zu Winkelmesser, ich habe unter zwei Funktionen, die erste Funktion gibt ein Versprechen, das ich in der 2. Funktion verwenden möchte, um Wert von ihm zu erhalten und zu verwenden es.Winkelmesser - Problem bei der Verwendung eines Funktionswerts von einer anderen Funktion

getColumnNumber(columnName) { 
     this.eh.waitForElement(this.GridsEleMap.get("HeaderTableHeaderRow")); 
     var colEle = this.GridsEleMap.get("HeaderTableHeaderRow").all(by.xpath(".//td//div[contains(@class,'text-content')]")); 
     return colEle.getText().then(function (text) { 
      var actIndex = text.indexOf(columnName) + 1; 
      logger.info("Column Index:" + actIndex); 
     }); 
    } 

clickRowElementUsingRowTextAndColumnName(rowText, columnName) { 
    var ele = this.GridsEleMap.get("BodyTable"); 
    return this.getColumnNumber(columnName).then(function (result) { 
     logger.info("Text:" + result); 
     var cellEle = ele.all(by.xpath(".//tr//td[" + result + "]//div[@class='virtualLink']")); 
     logger.info("Result:" + cellEle); 
     return cellEle.filter(function (elem) { 
      browser.actions().mouseMove(elem).perform(); 
      browser.sleep(50); 
      return elem.getText().then(function (text) { 
       return text.trim() === rowText.trim(); 
      }); 
     }).each(function (element) { 
      browser.actions().mouseMove(element).perform(); 
      element.click(); 
      browser.sleep(10*1000); 
     }); 
    }); 

Jedes Mal, wenn ich versuche, „Ergebnis“ Objekt der then Funktion auf erster Funktion in clickRowElementUsingRowTextAndColumnName angewandt zu verwenden, kommt sein Wert als nicht definiert. Bitte hilf mir dabei.

Ich muss diesen Ergebniswert übergeben, um einen Xpath des bestimmten Spaltenindex zu bilden und Operation auf ihm durchzuführen.

+0

Sie sollten den Wert 'return (text.indexOf (columnName) + 1)' aus 'colEle.getText()' promise zurückgeben. –

Antwort

2

Sie sollten den Wert von der ersten Funktion korrekt zurückgeben. Sie können versuchen, den folgenden Code beispielsweise:

getColumnNumber(columnName) { 
     ... 
     return colEle.getText().then(function (text) { 
      return text.indexOf(columnName) + 1; 
     }); 
} 

Wenn Sie sehen, es ist die actIndex zurückgibt.

Achten Sie auch darauf, dass Sie wenige Code nicht richtig verkettet haben, alle Winkelmesser Methoden versprechen Versprechen, die verkettet werden müssen, um sicher zu sein, den Flow-Sync zu halten.

Dann, genau wie Vorschlag, versuchen Sie die Verwendung von xpath Locators zu vermeiden. Sie sind unlesbar und führen zu einer Abnahme der Leistungen.

Verwandte Themen