硒如何比较元素?

时间:2016-04-27 15:20:24

标签: javascript selenium selenium-webdriver protractor

在最新版本的量角器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 个答案:

答案 0 :(得分:1)

.equals() javascript selenium绑定的WebDriverJS方法,首先,比较WebElement ID (记录在webdriver规范here中),由getId()方法检索:

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发挥作用。节点等式检查背后的逻辑基于比较节点类型,属性,命名空间,子节点数等。