2016-04-27 17 views
0

In der neuesten Version von Winkelmesser, equals() method was added on an ElementFinder object. Die Methode ruft wiederum die WebElement.equals() der WebDriverJS Methode:Wie vergleicht Selen Elemente?

return webdriver.WebElement.equals(this.getWebElement(), 
    element.getWebElement ? element.getWebElement() : element); 

Wie funktioniert die equals() Methode? Wie prüft es, ob Elemente gleich sind oder nicht? Einfach die innerHTML zu überprüfen ist natürlich nicht genug, da zwei verschiedene Elemente auf einer Seite identisch dargestellt werden können.

Antwort

1

Die .equals() Verfahren der WebDriverJS, JavaScript Selen-Bindungen auf den ersten,WebElement IDs vergleicht (im WebDriver spec dokumentiert here), die durch die getId() Methode abgerufen werden:

var ids = [a.getId(), b.getId()]; 
return webdriver.promise.all(ids).then(function(ids) { 
    // If the two element's have the same ID, they should be considered 
    // equal. Otherwise, they may still be equivalent, but we'll need to 
    // ask the server to check for us. 
    if (ids[0][webdriver.WebElement.ELEMENT_KEY] == 
     ids[1][webdriver.WebElement.ELEMENT_KEY]) { 
     return true; 
    } 

    // ... 
} 

Wenn IDs gleich, zwei Elemente gelten als gleich. Aber wenn nicht, bedeutet das nicht, dass die Elemente nicht gleich sind, und in diesem Fall kommt das Konzept der DOM Node Equality durch die elementEquals() wrapped method ins Spiel. Die Logik hinter der Knoten-Gleichheitsprüfung basiert auf einem Vergleich der Knotentypen, Attribute, Namespaces, Anzahl der Kinder usw.

Verwandte Themen