如何消除Selenium Java Client v3.11.0中timeout与polling的弃用警告
解决Selenium 3.11.0中FluentWait的弃用警告问题
这个问题我升级Selenium版本时也碰到过,核心原因是Selenium 3.x对FluentWait的时间相关API做了调整——弃用了依赖TimeUnit的方法,转而使用Java 8引入的java.time.Duration类来处理时间,这是为了贴合现代Java的时间API规范。
重写后的完整代码
你只需要替换withTimeout和pollingEvery的参数形式,同时确保导入Duration类即可:
import java.time.Duration; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.FluentWait; import org.openqa.selenium.support.ui.Wait; private Wait<WebDriver> mFluentWait(WebDriver pDriver) { Wait<WebDriver> gWait = new FluentWait<WebDriver>(pDriver) .withTimeout(Duration.ofSeconds(100)) // 替换原TimeUnit.SECONDS形式 .pollingEvery(Duration.ofMillis(600)) // 替换原TimeUnit.MILLISECONDS形式 .ignoring(NoSuchElementException.class); return gWait; }
关键修改说明
- 时间API替换:用
Duration.ofXxx()方法替代原来的「数值+TimeUnit」组合,比如Duration.ofSeconds(100)直接表示100秒,Duration.ofMillis(600)表示600毫秒,API更直观易懂,还支持ofMinutes()、ofHours()等扩展用法。 - 兼容性保障:
Duration是Java 8的特性,而Selenium 3.11.0本身就要求Java 8及以上版本,所以不用担心版本兼容问题。
修改完成后,弃用警告就会消失,代码也完全符合Selenium的最新API规范。
内容的提问来源于stack exchange,提问作者kripindas
相关产品推荐
相关产品推荐

