如何在selenium的Fluentwait.until中使用java.util.function?

时间:2016-04-20 12:16:55

标签: java selenium

FluentWait<WebElement> wait2= new FluentWait<WebElement>(table)
            .withTimeout(10, TimeUnit.SECONDS)
            .pollingEvery(500, TimeUnit.MILLISECONDS)
            .ignoring(NoSuchElementException.class);
    wait2.until(new Function<WebElement,Boolean>(){

        @Override
        public Boolean apply(WebElement t) {
            // TODO Auto-generated method stub
            return true;
        }

我有这个代码,我需要检查申请过时的多个条件(这里没有包含),ExpectedCondition没有用。

此代码在

上给出了错误
wait2.until(new Function<WebElement,Boolean>()
  

FluentWait类型中的(Predicate)方法不适用于参数(new Function(){})

我无法理解这个问题,直到有两种方式:

public <V> V until(Function<? super T, V> isTrue)

public void until(final Predicate<T> isTrue)

如果有人可以帮助我理解这个问题吗?

2 个答案:

答案 0 :(得分:1)

让它工作,F​​luentwait中使用的函数是

com.google.common.base.Function

它没有用,因为我之前使用过java.util.function。!!

答案 1 :(得分:0)

  

我尝试使用WebDriverWait而不是FluentWait,它对我有用。

WebDriverWait wait = new WebDriverWait(Driver, 60);
wait.withTimeout(60, TimeUnit.SECONDS);
wait.pollingEvery(5, TimeUnit.SECONDS);
wait.ignoring(NoSuchElementException.class);
wait.until(new ExpectedCondition<Boolean>(){
@Override
public Boolean apply(WebDriver driver) {
    WebElement ele=driver.findElement(locator);
    if(ele==null)
        return false;
    else
    {
        System.out.println("WebElement found");
        return true;
    }     
}
});