一尘不染

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

selenium

WebElement.isDisplayed()方法在哪里执行?该WebElement的.java类是创建一个合同的接口isDisplayed()方法,但我不能找到源代码,显示它是如何工作的。有谁知道我怎么找到它?我了解dom.js,并且可以看到ExpectedConditions.java中的所有方法如何工作,但找不到Java我们所谓的源代码实现element.isDisplayed()

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


阅读 458

收藏
2020-06-26

共1个答案

一尘不染

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

但是您可以在中找到isDisplayed此处的方法RemoteWebElement。所有WebElement方法都在此处实现。

该方法如下所示:

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,适用于扩展程序的,因此您可以在扩展程序端找到实现,可在此处找到

2020-06-26