gpt4 book ai didi

java - Selenium 预期条件,Webdriver 的实例来自哪里?

转载 作者:行者123 更新时间:2023-11-30 12:08:36 25 4
gpt4 key购买 nike

我正在努力弄清楚 WebDriver 实例是如何传递到 Selenium 的预期条件的。

所以我有一个简单的 WebDriverWait 用于网络元素的可见性:

new WebDriverWait(webDriver, Configuration.WEB_DRIVER_WAIT_TIMEOUT)
.until(ExpectedConditions.visibilityOf(element));

这里的 webDriver 实例是上面已经实例化的 chromedriver。

我的问题是:在 visibilityOf() 方法中:

public static ExpectedCondition<WebElement> visibilityOf(final WebElement element) {
return new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return elementIfVisible(element);
}

@Override
public String toString() {
return "visibility of " + element;
}
};
}

就在上面,WebDriver 的实例如何以及哪个实例被传递给 apply()?我了解 ExpectedCondition 实现了函数接口(interface)

public interface ExpectedCondition<T> extends Function<WebDriver, T> {}

它以 WebDriver 作为第一个参数。

WebDriver 的实例如何传递给 visibilytOf() 的 ExpectedCondition?

谢谢

最佳答案

当您创建 WebDriverWait您正在传递 webdriver 实例。相同的实例将传递给 apply ExpectedCondition的功能接口(interface)方法通过 until方法。

WebDriverWait延伸FluentWait<WebDriver>它实际上实现了 until方法。当你构造 WebDriverWait驱动程序作为参数传递给 FluentWait将其保存在属性中。

现在当您调用 until 时在 WebDriverWait until方法调用 apply传递 driver 的方法你实际上传递给了构造函数。 ExpectedCondition您正在构建的对象实际上接收两个输入。 WebElement你传递给它以及 driver你传递给WebDriverWait .

源代码并不太复杂 - 您可以查看它以获得更详细的信息:)

关于java - Selenium 预期条件,Webdriver 的实例来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54288027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com