当前位置: 首页 > 知识库问答 >
问题:

如何在Java中使用Web驱动程序等待进度条

堵睿范
2023-03-14

操作:如果我点击任何一个链接,当页面加载完成时,进度条就会显示出来,然后这个进度条就会被隐藏

疑惑:我们想要自动化以上动作,我如何检查进度动作是否完成

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

请提供一个如何处理显式wait的建议

共有1个答案

姚星河
2023-03-14

您应该使用WebDriverWait和ExpectedConditions类,而不是thread.sleep()来等待任何条件。

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

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

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

 类似资料:
  • 我见过很多关于等待Selenium Web驱动程序(专门针对Java)的方法(比如这一个)。然而,应用这里的方法似乎并不奏效。 我试图通过在哈希表中的值中循环来测试用户查询结果。我在下面的代码中尝试了两种方法:等待Document.ReadyState和等待Class选择的项的加载。然而,看起来列表是在创建all,而没有留下完成元素刷新的时间。 我有时会出现以下错误,实际上可能是元素更新的时候。我

  • 我刚开始使用Selenium Web驱动程序测试一个网上银行交易应用程序。 我喜欢,但有些事让我很恼火。假设我使用以下代码访问登录屏幕: 我也试过: 但这没有帮助,因为这行似乎只有在页面完全加载时才执行。 编辑:我和这里的一个人谈过了..他告诉我ipinvite.iperceptions.com不是我们的应用程序调用的。!!!事实上,当我在FF中加载站点时,我没有看到这个调用?! Selenium

  • 问题内容: 我可以长时间等待Selenium Web Driver吗? 即使我可以像下面那样设置隐式等待命令,它也不会等待我给定的时间。 这里有什么问题吗? 就我而言,我需要执行一个测试用例并等待4分钟,然后执行下一个测试用例。 我在这里使用Java。 问题答案: 其实这不是我的答案,两天前我在这里看到了这个答案,但是我没有时间应用它。今天我尝试了,这就是我想要的。 不幸的是,现在我在这里看不到该

  • 如何等待硒Web驱动程序中的子窗口 当我点击提交按钮,它会把我带到子窗口,我断言URL,但有时子窗口需要时间来目前使用thread.sleep(4000),但这是错误的方式。

  • 问题内容: 我正在通过chromewebdriver(windows)使用selenium和python来自动执行从不同页面下载大量文件的任务。我的代码可以运行,但是解决方案远非理想:下面的函数单击网站按钮,该按钮会启动Java脚本函数,该函数会生成PDF文件,然后下载该文件。 我必须使用静态等待才能等待下载完成(丑陋)。我无法检查文件系统以确认下载何时完成,因为我使用的是多线程(从不同页面下载很

  • 我正在编写一个与我们的一个系统交互的硒脚本。在我们的系统中,有一个按钮,当按下时,它只能正确加载页面大约一半的时间(它只是在每隔一个场合加载无限长的时间),因此我不能依赖默认的硒等待页面加载。因此,我想按下按钮,并在打开新窗口之前立即关闭Web浏览器以继续执行脚本。不幸的是,我无法解决按钮本身的问题。 我目前的代码: 目前,System.out不太可能达到,因为一旦action.perform()