如何在java中使用Web Driver等待进度条

时间:2014-06-25 05:54:04

标签: java selenium selenium-webdriver

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

疑惑: 我们希望自动执行上述操作,如何检查进度操作是否完成

下面是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>

请提供一个关于如何处理显式等待

的建议

1 个答案:

答案 0 :(得分:5)

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

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

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

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