我试图让 Selenium 等待页面加载后动态添加到 DOM 的元素。我试过这个:
fluentWait.until(ExpectedConditions.presenceOfElement(By.id("elementId"));
如果有帮助,这里是 fluentWait
:
FluentWait fluentWait = new FluentWait<>(webDriver) {
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(200, TimeUnit.MILLISECONDS);
}
但它抛出一个 NoSuchElementException
。它看起来像 presenceOfElement
期望元素在那里,所以这是有缺陷的。这对 Selenium 来说一定是面包和黄油,我不想重新发明轮子……有没有替代方案,最好不要自己滚动 Predicate
?
原文由 Steve Chambers 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要调用
ignoring
忽略异常,而WebDriver
将等待。有关详细信息,请参阅 FluentWait 的文档。但请注意,此条件已在 ExpectedConditions 中实现,因此您应该使用:
*较少版本的硒:
所以代码看起来像这样:
可以在 此处 找到有关等待的基本教程。