【问题标题】:How to wait for progress bar using Web Driver in java如何在java中使用Web Driver等待进度条
【发布时间】:2016-06-29 02:57:38
【问题描述】:

行动: 如果我点击任何链接,一旦页面完全加载就会显示进度条,然后隐藏进度条

疑问: 我们想自动化上述操作,我如何检查进度操作是否完成

下面是html代码

单击链接后,html 看起来像这样

<div id ="divProgress" class="progresswindow" style="display: block;"></div>

然后页面加载完成的html看起来像这样

<div id ="divProgress" class="progresswindow" style="display: none;"></div>

那么我如何检查这个进度条是否完成,目前我正在使用 Thread.sleep(),但有时 web 驱动程序会引发异常

Other element would receive the click: <div id="divProgress" class="progresswindow" style="display: block;">...</div>

请提供建议如何处理显式等待

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    而不是 Thread.sleep() 等待任何条件,您应该使用 WebDriverWaitExpectedConditions 类。

    在你的情况下,你应该等到带有进度条的 div 变得不可见:

        long timeoutInSeconds = 30;
        new WebDriverWait(driver, timeoutInSeconds)
      .until(ExpectedConditions.invisibilityOfElementLocated(By.id("divProgress")));
    

    正如您所发现的,Thread.sleep() 太脆弱,无法在测试代码中安全使用 - 您应该始终等待可以检查的内容。作为奖励,您的测试可能会执行得更快!

    【讨论】:

    • 感谢@alb-i986,他提出的编辑建议极大地改进了帖子(我不知道内置的 ExpectedConditions),但编辑排名下降。不过,他们确实改进了帖子!
    • 不客气 -- 感谢接受我的建议 :)
    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多