9

下面是我将 Selenium Webdriver 版本更新到 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;
}

withTimeout在代码中的和pollingEvery部分显示不推荐使用的警告。

如何重写此代码,以便删除已弃用的警告。

由于我是硒新手,我不确定这种变化。任何帮助将不胜感激。

4

4 回答 4

16

@Grasshopper 的回答将我们指向 FluentWait 的确切修改构造函数以及您从withTimeoutpollingEvery字段中删除弃用警告的要求如果您面临进一步的困难,您可以使用下面的代码行:

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);

您可以在The type FluentWait is not generic中找到详细讨论;通过 Selenium 和 Java 无法使用 FluentWait 类的参数错误对其进行参数化

于 2018-04-06T10:18:42.567 回答
8

检查FluentWait的源代码,其中提到使用使用 Duration 作为参数的方法。

  1. withTimeout - 使用withTimeout(Duration duration)方法。
  2. pollingEvery - 使用该pollingEvery(Duration duration)方法。
于 2018-04-06T08:51:56.530 回答
6

您可以使用以下代码行:

  Wait<Browser> wait = new FluentWait<>(driver)
            .withTimeout(Duration.ofSeconds(*timeToWaitInSec*))
            .pollingEvery(Duration.ofMillis(*TimeToTryinMillisec*))
            .ignoring(WebDriverException.class);
于 2018-07-16T17:40:56.723 回答
0

升级到 Selenium 4 后,Fluent 等待是其中一部分的旧方法已被弃用。

以类似的顺序使用以下代码进行无缝执行:

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

有关 Selenium 4 中的其他更改/升级,另请参阅下面的文章。

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

于 2022-02-25T06:55:09.257 回答