The method until(Function) in the type FluentWait is not applicable for the arguments

Solved 1 Answers 406 Views

I am using WebDriver wait in my code. I upgraded my selenium library. I started to get below error.

The method until(Function<? super WebDriver,V>) in the type FluentWait<WebDriver> is not applicable for the arguments (new ExpectedCondition<WebElement>(){})

My sample code:

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

   WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
     public WebElement apply(WebDriver driver) {
       return driver.findElement(By.id("foo"));

1 Answer

Best answer

You will have to update Guava library to version 21 and your JDK to version 8.

Change log for WebDriver wait and FluentWait

* Updated Guava to version 21 and started using Java 8 features. Users
  are recommended to update too.
* Remove deprecated `FluentWait.until(Predicate<?>)` method. This
  should make lambdas work properly with Wait instances now.
* Update how the WebDriverException gathers system info. Resolves an
  issue with slow-downs on OS X Sierra
* Update Wait and FluentWait for Java 8. Requires an update to the
  latest guava version 21.0
answered Feb 27 by stbadmin (4,970 points)
selected Feb 28 by ursmahesh