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

Pra*_*abu 1 java selenium selenium-webdriver

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

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

下面是html代码

一旦我点击链接html看起来像这样

<div id ="divProgress" class="progresswindow" style="display: block;"></div>
Run Code Online (Sandbox Code Playgroud)

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

<div id ="divProgress" class="progresswindow" style="display: none;"></div>
Run Code Online (Sandbox Code Playgroud)

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

Other element would receive the click: <div id="divProgress" class="progresswindow" style="display: block;">...</div>
Run Code Online (Sandbox Code Playgroud)

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

Ros*_*ner 5

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

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

    long timeoutInSeconds = 30;
    new WebDriverWait(driver, timeoutInSeconds)
  .until(ExpectedConditions.invisibilityOfElementLocated(By.id("divProgress")));
Run Code Online (Sandbox Code Playgroud)

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