Selenium中WebElement.isDisplayed()方法的实现在哪里?

时间:2015-01-08 23:01:55

标签: selenium

WebElement.isDisplayed()方法的实施在哪里? WebElement。java类是一个为isDisplayed()方法创建契约的接口,但我找不到显示其工作原理的源代码。有谁知道我怎么能找到它?我知道dom.js,我可以看到ExpectedConditions。java中的所有方法是如何工作的,但我找不到我们称之为Java的源代码实现(element.isDisplayed()) {1}}。

我认为要真正了解ExpectedConditions的工作方式,我需要了解基础isDisplayed()方法的工作原理。我无法弄清楚它最终如何调用bot.dom.isInteractable中的dom.js方法。

1 个答案:

答案 0 :(得分:4)

实施细节特定于驱动程序。

但您可以在isDisplayed找到RemoteWebElement方法。所有WebElement方法都已在here上实施。

方法如下:

public boolean isDisplayed() {
    Object value = execute(DriverCommand.IS_ELEMENT_DISPLAYED, ImmutableMap.of("id", id))        .getValue();
    try {
          return (Boolean) value;
    } catch (ClassCastException ex) {
      throw new WebDriverException("Returned value cannot be converted to Boolean: " + value, ex);    
   }  
}

这一行:

execute(DriverCommand.IS_ELEMENT_DISPLAYED, ImmutableMap.of("id", id))

纯粹是特定于驱动程序的,因为每个驱动程序都有自己的处理此操作的实现IS_ELEMENT_DISPLAYED

例如SafariDriver,它与扩展程序一起使用,因此您可以在扩展端找到实现,可以找到here