2016-12-04 5 views
1

Ich habe eine Implementierung ähnlich der folgenden:Wie um zu überprüfen, wenn ein protractor.ElementFinder null ist

const arrayOfElements: protractor.ElementArrayFinder = $$('firstName'); 
returnElementMatchingCriteria.then(do something with the element.. 


public returnElementMatchingCriteria(criteria: string): Promise<protractor.ElementFinder> { 
    arrayOfElements.each(element) 
     if (element.text() === criteria) { 
      return element 

Wenn es keine passenden Elemente sind, dann ist die Funktion als null ausgewertet wird. Wie kann ich überprüfen, ob der zurückgegebene Wert Null ist, bevor Sie mit der nächsten Zeile fortfahren?

Ich habe versucht, etwas ähnliches zu verwenden, wenn if (returnedValue === null), aber ein String-Literal kann nicht angewendet werden, um ElementFinder einzugeben.

Jede Hilfe würde sehr geschätzt werden.

Antwort

2

Ich glaube, Sie filter() statt each() verwenden soll und verwenden count() die Ergebnisse zu überprüfen:

var arrayOfElements = $$('firstName'); 
var result = arrayOfElements.filter(function (elm) { 
    return elm.getText().then(function (text) { 
     return text === criteria; 
    }); 
}); 
expect(result.count()).toBeGreaterThan(0); 

// do something with result - e.g. result.first() to get the first matching element 

Im Fall gibt es keine passenden Elemente der result.count() auf 0

bewerten würde
Verwandte Themen