2016-04-27 13 views
0

最近のバージョンの分度器では、equals() method was added on an ElementFinder objectです。セレンはどのように要素を比較しますか?

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

equals()方法はどのように機能するの:順番に方法はWebDriverJSのWebElement.equals()メソッドを呼び出しますか?要素が等しいかどうかはどのようにしてチェックされますか? innerHTMLを単にチェックするだけでは、2つの異なる要素がページ上で全く同じように表現できるので、明らかに十分ではありません。

答えて

1

セレンバインディングは、最初に、getId()方法によって取得され、(webdriverを仕様hereに記載)WebElement IDを比較するJavaScript WebDriverJS.equals()方法:

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; 
    } 

    // ... 
} 

IDがある場合等しい場合、2つの要素は等しいとみなされます。しかし、そうでない場合、要素が等しくないことを意味するわけではなく、この場合、DOM Node EqualityのコンセプトはelementEquals() wrapped methodで始まります。ノードの等価性検査の背後にある論理は、ノードのタイプ、属性、名前空間、子供の数などを比較することに基づいています。

関連する問題