element.isDisplayed()和wait.until(ExpectedConditions.visibilityOf(element))之间的区别;

use*_*862 4 selenium

我正在尝试使用WebDriver的fluentAPI,并且与可用选项略有混淆.我想等待元素变得可见.我不认为有很多方法可以做到这一点,但我想具体了解以下两种方法之间的区别:

 (1)new FluentWait<WebElement>(webElement).
            withTimeout(timeoutSeconds, TimeUnit.SECONDS).
            pollingEvery(pollingTime, TimeUnit.MILLISECONDS).
            untilwait.until(ExpectedConditions.visibilityOf(element));

(2) public void waitForWebElementFluently(WebElement webElement) {
    new FluentWait<WebElement>(webElement).
            withTimeout(timeoutSeconds, TimeUnit.SECONDS).
            pollingEvery(pollingTime, TimeUnit.MILLISECONDS).
            until(new Predicate<WebElement>() {
                @Override
                public boolean apply(WebElement element) {
                    return element.isDisplayed();
                }
            }
            );
}
Run Code Online (Sandbox Code Playgroud)

使用isDisplayed和visibilityOf有什么区别?

Ame*_*mey 8

isDisplayed :

这个元素是否显示?此方法避免了必须解析元素的"样式"属性的问题. 资源


visibilityOf

期望检查已知存在于页面的DOM上的元素是否可见.能见度意味着该元件不仅显示,而且具有高度和宽度,该宽度大于0的 .


因此,可见性涵盖了显示元素的条件.