操作: 如果我点击任何链接,一旦完全加载页面就会显示进度条,然后隐藏进度条
疑惑: 我们希望自动执行上述操作,如何检查进度操作是否完成
下面是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>
请提供一个关于如何处理显式等待
的建议答案 0 :(得分:5)
而不是Thread.sleep()
等待任何条件,您应该使用WebDriverWait和ExpectedConditions类。
在您的情况下,您应该等到带有进度条的div变为不可见:
long timeoutInSeconds = 30;
new WebDriverWait(driver, timeoutInSeconds)
.until(ExpectedConditions.invisibilityOfElementLocated(By.id("divProgress")));
正如您所发现的,Thread.sleep()
太脆弱,无法在测试代码中安全使用 - 您应该始终等待可以检查的内容。作为奖励,您的测试可能会执行得更快!