gpt4 book ai didi

java - 在 Fluent Wait 中处理 NoSuchElementException

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:41 24 4
gpt4 key购买 nike

我知道就等待不在 DOM 中的 Web 元素而言,最有效的是流畅的等待。所以我的问题是:

有没有一种方法可以处理和捕获 NoSuchElementException 或任何由于元素不存在而导致 fluent wait 可能抛出的异常?

我需要一个 boolean 方法,无论是否找到元素,它都会给我结果。

这种方法在网络上很流行。

public void waitForElement(WebDriver driver, final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(2, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);

wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
});
}

我需要的是,**.ignoring(NoSuchElementException.class);** 不会被忽略。一旦异常被捕获,它就会返回 FALSE。另一方面,当找到一个元素时,它将返回 TRUE。

最佳答案

作为替代方案,您希望看到 WebDriverWait 的实现通过轮询,这里是构造函数的详细信息:

  • WebDriverWait(WebDriver driver, long timeOutInSeconds):Wait 将忽略在“until”条件下默认遇到(抛出)的 NotFoundException 实例,并立即传播所有其他实例。

    WebDriverWait wait1 = new WebDriverWait(driver, 10);
  • WebDriverWait(WebDriver driver, long timeOutInSeconds, long sleepInMillis):Wait 将忽略默认情况下在 'until' 条件下遇到(抛出)的 NotFoundException 实例,并立即传播所有其他。

    WebDriverWait wait2 = new WebDriverWait(driver, 10, 500);

更新:

要回答您的评论,您需要在此处定义 WebDriverWait 实例。接下来我们必须实现 WebDriverWait实例,即 wait1/wait2 通过适当的 ExpectedConditions 在您的代码中条款。

关于java - 在 Fluent Wait 中处理 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com