寻找更好的方法来等待元素出现和消失

时间:2017-12-15 20:14:15

标签: java logging selenium-webdriver

我有一个有效的解决方案,但我希望有更好的方法。

在自动化网站时,有很多地方会显示一个微调器来告诉用户进程正在运行。根据需要在DOM中添加和删除div;而不是课程更改或设置显示:无。

当我第一次开始构建自动化框架时,我有一个简单的等待元素不再存在:numberOfElementsToBe等于0.但我一直有时间问题:旋转器出现在第一个位置,所以代码会假设一切都已完成,继续并失败,因为页面还没有准备好。

为了解决这个问题,我添加了一个try / catch来首先查看/等待微调器出现2秒钟。然后,无论代码是否看到微调器,它都会等待它消失。

try {
        quickWait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.className(identifier), 0));
    } catch (Exception e) {
        //Nope
    }
    wait.until(ExpectedConditions.numberOfElementsToBe(By.className(identifier), 0));
}

这样,我抓住了所有情况:

  • 正常 - 等待微调器,它正常显示,然后等待它 离开
  • 慢 - 等待微调器,它需要一秒钟才能显示出来 仍然被第一次等待抓住,然后等待它消失
  • 快 - 等待旋转器,但操作速度太快,旋转器已经来去。所以代码等待微调器两秒钟并且没有看到它,所以它落到了什么也没做的捕获,然后等待微调器消失(它已经有),所以立即继续。< / LI>

所有这些都很好,除了所有&#34;快速&#34;的情况。由于等待失败,它会在正在运行的控制台日志(不是浏览器控制台)中抛出WARNING。这使得诊断问题变得很痛苦,因为我必须通过一系列警告试图找到真正的问题。

  • 我不想关闭所有警告,因为其他地区可能会有重要信息。
  • 这是运行时警告,因此@SuppressWarnings无效。

所以,任何人都有任何建议/替代方法来处理&#34;等待情况存在/等待它停止&#34;哪些情况不会抛出大量无用的警告? 我正在寻找一个&#34;做这个而不是#34;方法或一种方法来抑制单个方法的运行时警告消息。

注意:微调器的时间是可变的。有时它很快就会在屏幕上闪烁,有时甚至需要一秒甚至在屏幕上显示。测试不应该太脆,以至于错误的旋转器会导致测试失败。它仅用作结果可用的信号。

0 个答案:

没有答案