gpt4 book ai didi

java - Selenium : NoSuchElementException Thrown on the Line Where I Wait

转载 作者:行者123 更新时间:2023-12-02 11:58:41 25 4
gpt4 key购买 nike

这是一个常见问题的奇怪变种。

我正在使用 headless Firefox 浏览器运行 Selenium 项目。

我得到了常见的NoSuchElementExceptions。这不是什么新鲜事。但是,尝试通过显式等待来解决这些问题并不能解决问题。

例如,以下行抛出 NoSuchElementException:

WebElement trackingInbox = methodDriver.findElement(By.id("inbox-widget-container-id"));

然后我在此行上方添加以下内容:

FluentWait wait = new FluentWait(methodDriver);
wait.withTimeout(90, TimeUnit.SECONDS);
wait.pollingEvery(250, TimeUnit.MILLISECONDS);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("inbox-widget-container-id")));

WebElement trackingInbox = methodDriver.findElement(By.id("inbox-widget-container-id"));

在第一个实例中,我在“methodDriver.findElement . . . .”处收到异常

在第二个实例中,我在“wait.until . . .”处得到它

当我等待“presenceOf . . .”时,就会发生这种情况当我等待“visibilityOf...”时从它的显示方式来看,该元素必须在我等待它之前可用,但这似乎违背了目的。

就目前的情况而言,我别无选择,只能添加隐式等待,但我知道必须有某种方法来执行显式等待,以便该元素不必可用< em>在我等待之前。

我想知道是否有任何关于我做错了什么的想法,以及是否有任何原则可以用来确定特定的等待是否有用。

最佳答案

你实际上忘记了最后调用ignoring函数,这个忽略就是你想要的。当您等待元素的可见性时,可能会出现该元素不存在的情况,但是如果您使用忽略功能,它将忽略此类错误的发生,直到满足给定的条件为止。

   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class);

关于java - Selenium : NoSuchElementException Thrown on the Line Where I Wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47417601/

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