与 Selenium2 ExpectedCondition 一起使用 Lambda 表达式?

标签 lambda webdriver selenium-webdriver

读了一篇关于JDK1.8和Lambda表达式的文章后,我意识到我这几年一直在使用的ExpectedCondition块可能适合表达为Lambda表达式。

鉴于此等待对象:

Wait<WebDriver> wait = new FluentWait<WebDriver>( driver )
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring( NoSuchElementException.class );

谁能告诉我如何将 Selenium 的这个 ExpectedCondition 表达式转换为 Lambda 表达式?
  WebElement foo = wait.until( new ExpectedCondition<Boolean>() {
       public WebElement apply( WebDriver webDriver ) {
           return webDriver.findElement( By.id("foo") );
       }
  } );

最佳答案

从 Selenium 3.2.0 版开始,until() 方法将 只接受Function<T,K> 作为参数并接受 Predicate<T>作为参数已弃用 .

上面的决定是使用 lambda 表达式。

所以回答你的问题:

Wait<WebDriver> wait = new FluentWait<WebDriver>( driver )
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring(NoSuchElementException.class);

//lamda expression:
WebElement foo = wait.until(d -> d.findElement(By.id("foo")));

关于与 Selenium2 ExpectedCondition 一起使用 Lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552851/

相关文章:

python - 无论我使用什么浏览器,Webdriver都无法访问网页

java - 很难理解 Java 消费者示例

c# - 将两个 lambda 与表达式相乘

java - "Lambdifying"Java中的scala函数

java - 使用 selenium WebDriver 在网页中执行 javascript

python - Selenium Webdriver + python - 鼠标悬停后无法隐藏工具提示

pandas - 如何将 lambda 函数应用于 PANDAS 中满足条件的行

java - WebDriver HTMLUnit 问题与 Ajax

python - 如何使用 selenium 网络驱动程序获取文本区域内容

java - 网络驱动程序异常 : unknown error: cannot determine loading status from timeout: Timed out receiving message from renderer: 60 using Selenium and Java