【问题标题】:Explicit wait is not working in Selenium webdriver显式等待在 Selenium webdriver 中不起作用
【发布时间】:2015-10-09 05:01:01
【问题描述】:

我正在尝试在我的页面中找到一个元素。只有在应用程序中有任何错误时,该元素才会出现。我处理得很好,唯一的问题是它等待 30 秒(隐式等待)才能进入下一步。我不想等待 30 秒,而是希望我的脚本在进入下一步之前等待 3 秒,所以我决定使用显式等待。这是我的代码

WebDriverWait wait = new WebDriverWait(driver, 3);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("errorelement")));

问题是 Selenium webdriver 在给出错误并进入下一步之前仍在等待该元素长达 30 秒。我也尝试了 visibilityOfElementLocated 选项,但它仍然无法正常工作。

我在这里遗漏了什么吗?

Selenium 版本:- 2.46.0

浏览器:- Mozilla、Chrome

【问题讨论】:

  • 您能与我们分享完整的代码吗?您似乎忘记从某个地方删除 30 秒等待。

标签: java selenium webdriver


【解决方案1】:

我建议将隐式等待设置为 0,并始终使用显式等待:

driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);

这里有一个很好的answer 关于这个主题。

【讨论】:

    【解决方案2】:

    如果您在同一解决方案中使用隐式等待和显式等待,您将遇到 seleniumhq 文档中的问题

    警告:不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置 10 秒的隐式等待和 15 秒的显式等待,可能会导致 20 秒后发生超时。


    添加官方文档链接和截图 -

    请参阅 Selenium 官方文档,了解混合显式和隐式等待。

    (https://www.selenium.dev/documentation/en/webdriver/waits/)

    【讨论】:

      【解决方案3】:

      您能与我们分享完整的代码吗?您似乎忘记从某个地方删除 30 秒等待。 - 皮提亚

      这非常直截了当,我遇到了同样的问题,但这只是因为我在启动浏览器时声明了隐式等待 30 秒,没想到回头看,因为它看起来“微不足道”。非常感谢peetya指出这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-15
        • 2023-03-05
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 2018-09-07
        • 1970-01-01
        相关资源
        最近更新 更多