10

Below is my code which is showing as deprecated after I have been updated the Selenium Webdriver version to 3.11.0.

    private Wait<WebDriver> mFluentWait(WebDriver pDriver) {
    Wait<WebDriver> gWait = new FluentWait<WebDriver>(pDriver).withTimeout(100, TimeUnit.SECONDS)
            .pollingEvery(600, TimeUnit.MILLISECONDS).ignoring(NoSuchElementException.class);   
    return gWait;
}

Showing deprecated warning in withTimeout and pollingEvery section in the code.

How can I rewrite this code so that I can remove the deprecated warning.

Since am new to selenium am not sure about the change. Any help will be appreciated.

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
kripindas
  • 480
  • 2
  • 7
  • 21
  • Possible duplicate of [Selenium Webdriver 3.0.1-\[Eclipse-Java-Chrome\]: Selenium showing error for FluentWait Class](https://stackoverflow.com/questions/42275658/selenium-webdriver-3-0-1-eclipse-java-chrome-selenium-showing-error-for-fluen) – undetected Selenium Apr 06 '18 at 07:37
  • @DebanjanB I am not getting any errors on executing, the `withTimeout` and `pollingEvery` section in the code is showing as deprecated. When I referred the selenium documents , it is showing in the deprecated lists. So I want to remove the deprecated parts in the code and want to rewrite the method. I think you have understood the difference between the question you mentioned and I have asked. – kripindas Apr 06 '18 at 07:44

4 Answers4

16

@Grasshopper 's answer points us to the exact modified constructor of FluentWait and your requirement of removing the deprecation warning from withTimeout and pollingEvery fields. Incase you are facing further difficulty you can use the line of code below :

import java.time.Duration;
//lines of code
Wait<WebDriver> gWait = new FluentWait<WebDriver>(pDriver).withTimeout(Duration.ofSeconds(100))
        .pollingEvery(Duration.ofMillis(600)).ignoring(NoSuchElementException.class);

You can find a detailed discussion in The type FluentWait is not generic; it cannot be parameterized with arguments error for FluentWait Class through Selenium and Java

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
8

Check the source code of FluentWait which mentions to use the methods using Duration as arguments instead.

  1. withTimeout - Use the withTimeout(Duration duration) method.
  2. pollingEvery - Use the pollingEvery(Duration duration) method.
Grasshopper
  • 8,908
  • 2
  • 17
  • 32
6

you can use following lines of code:

  Wait<Browser> wait = new FluentWait<>(driver)
            .withTimeout(Duration.ofSeconds(*timeToWaitInSec*))
            .pollingEvery(Duration.ofMillis(*TimeToTryinMillisec*))
            .ignoring(WebDriverException.class);
Anj Raju
  • 606
  • 7
  • 7
0

After the upgrade to Selenium 4, few of the old methods have been deprecated of which Fluent wait is part of.

Use the below code in the similar order for seamless execution:

 Wait<Browser> wait = new FluentWait<>(driver)
            .withTimeout(Duration.ofSeconds(*timeToWaitInSec*))
            .ignoring(WebDriverException.class)
            .pollingEvery(Duration.ofMillis(*TimeToTryinMillisec*));

Also refer for below article for the other changes/upgrade in Selenium 4.

https://applitools.com/blog/selenium-4-migration/

Moin
  • 71
  • 1