使用 WebDriverWait 仅检查直到超时,无一例外

Using WebDriverWait to only check till timeout, without exception

提问人:golu 提问时间:10/24/2023 最后编辑:golu 更新时间:10/24/2023 访问量:48

问:

我正在尝试使用 WebDriverWait 让条件为真。如果超时后不成立,请继续 - 而不是超时异常。

new WebDriverWait(driver, 10)
    .pollingEvery(Duration.ofSeconds(1))
    .until(wd -> isElementPresent());

return isElementPresent()

基本上,这个元素可以在几秒钟的延迟后出现,并且不能保证在那里。

  • 如果元素存在,则立即返回 true
  • 如果元素不存在,请等待最多 10 秒,然后返回 false

我可以用 WebDriverWait 实现这一点吗?

java selenium-webdriver webdriver webdriver 等待

评论


答:

0赞 kenneth 10/24/2023 #1

你试过使用这种方法吗?.ignoring

new WebDriverWait(driver, 10)
    .pollingEvery(Duration.ofSeconds(1))
    .ignoring(TimeoutException.class)
    .until(wd -> isElementPresent());

return isElementPresent()

否则,您应该尝试该方法,该方法允许更大的灵活性:try-catch

try {
    WebDriverWait wait = new WebDriverWait(driver, 10); // Wait for up to 10 seconds
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("yourElementId")));
    
    // Perform actions on the element
} catch (TimeoutException e) {
    // Handle the TimeoutException (e.g., log an error, take a screenshot, or report the issue)
    System.out.println("TimeoutException occurred: Element was not found within the specified timeout.");
}