gpt4 book ai didi

java - 看不懂FluentWait中until()方法的实现

转载 作者:搜寻专家 更新时间:2023-10-31 20:27:11 24 4
gpt4 key购买 nike

until() org.openqa.selenium.support.ui.FluentWait 中的方法为 Predicate<T> 重载和 Function<? super T, V>接口(interface)作为参数。

它应该将以下之一作为参数(实现 apply() 方法):

  • 匿名类
  • Lambda 表达式
  • 方法引用

我定义为此方法参数的任何 lambda 都会抛出以下错误:

方法 until(Predicate) 对于类型 WebDriverWait 是不明确的

我的 Lambda:

x -> x.findElement(byLocator).isDisplayed()

我假设任何 lambda 都是这种情况,如 apply()对于 Function 或 Predicate 可以通过使用这些 lambda 来实现。

那么我的问题是,以Predicate为参数的until方法有什么用?

更新:删除了@drkthng 回答的问题的第一部分。

最佳答案

回答您的第一个问题:

看看 Selenium API docs for ExpectedConditon .

我引用:

public interface ExpectedCondition<T>
extends com.google.common.base.Function<WebDriver,T>

你看,ExpectedCondition 继承自 google 的 Function 接口(interface),因此你可以将它用作 until() 方法的参数。

关于你的第二个问题:

我不认为你可以像那样交出 lambda。 Until 方法正在等待谓词或函数(正如您正确提到的那样)。

关于 Predicates 和 lambda 之间的区别,请查看示例 here

所以你可以尝试这样的事情,仍然使用你的 lambda 表达式:

Predicate<WebDriver> myPredicate = x ->x.findElement(By.id("id")).isDisplayed();

WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver, 10);
wait.until(myPredicate);

关于java - 看不懂FluentWait中until()方法的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31452685/

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