2016-04-27 102 views
0

在最近版本的量角器中,equals() method was added on an ElementFinder object。反过来方法调用WebDriverJS的WebElement.equals()方法:硒如何比较元素?

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

如何进行equals()方法的工作?它如何检查元素是否相等?显然,仅仅检查innerHTML是不够的,因为两个不同的元素可以在页面上以相同的方式表示。

回答

1

WebDriverJS.equals()方法,JavaScript的硒的绑定中,首先,比较WebElement标识,其由getId()方法检索(在webdriver的规范here记载):

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是相等,两个要素被认为是相等的。但是,如果它们不是,那并不意味着元素不相等,在这种情况下,DOM Node Equality的概念通过elementEquals() wrapped method发挥作用。节点相等性检查背后的逻辑基于比较节点类型,属性,命名空间,子女数量等。