如何在java中使用Web驱动程序等待进度条
行动: 若我点击任何链接,一旦页面完全加载,进度条就会显示出来,那个么进度条就隐藏了 疑问: 我们想自动执行上述操作,如何检查进度操作是否完成 下面是html代码 一旦我点击链接,html看起来像这样如何在java中使用Web驱动程序等待进度条,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,行动: 若我点击任何链接,一旦页面完全加载,进度条就会显示出来,那个么进度条就隐藏了 疑问: 我们想自动执行上述操作,如何检查进度操作是否完成 下面是html代码 一旦我点击链接,html看起来像这样 <div id ="divProgress" class="progresswindow" style="display: block;"></div> <div id ="divProgress" class="progresswindow" style="dis
<div id ="divProgress" class="progresswindow" style="display: block;"></div>
<div id ="divProgress" class="progresswindow" style="display: none;"></div>
然后页面加载完成的html如下所示
<div id ="divProgress" class="progresswindow" style="display: block;"></div>
<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>
其他元素将收到单击:。。。
请提供一个建议,说明如何使用显式等待来处理此问题,而不是使用
Thread.sleep()
要等待任何条件,应使用和类
在您的情况下,您应该等到带有进度条的div变为不可见:
long timeoutInSeconds = 30;
new WebDriverWait(driver, timeoutInSeconds)
.until(ExpectedConditions.invisibilityOfElementLocated(By.id("divProgress")));
正如您所发现的,
Thread.sleep()
太脆弱,无法在测试代码中安全使用-您应该一直等待可以检查的内容。作为奖励,您的测试可能会执行得更快 而不是Thread.sleep()
要等待任何条件,应该使用和类
在您的情况下,您应该等到带有进度条的div变为不可见:
long timeoutInSeconds = 30;
new WebDriverWait(driver, timeoutInSeconds)
.until(ExpectedConditions.invisibilityOfElementLocated(By.id("divProgress")));
正如您所发现的,
Thread.sleep()
太脆弱,无法在测试代码中安全使用-您应该一直等待可以检查的内容。作为奖励,您的测试可能会执行得更快 感谢@alb-i986,他提出的编辑极大地改进了帖子(我不知道内置的预期条件),但编辑被降级了。他们确实改进了帖子!不客气——感谢您接受我的建议:)感谢@alb-i986,他建议对文章进行编辑,大大改进了文章(我不知道内置的预期条件),但编辑的排名降低了。他们确实改进了帖子!不客气,谢谢你接受我的建议:)