首页  >  文章  >  Java  >  了解 Selenium 4 中的等待

了解 Selenium 4 中的等待

PHPz
PHPz原创
2024-08-19 06:06:32868浏览

Understanding Waits in Selenium 4

在这篇文章中,我们将探讨 Selenium 4 中不同类型的等待,包括新的改进和使用的最佳实践。

Selenium 4 中的等待类型
Selenium 4 提供了三种主要的等待类型:

  1. 隐式等待
  2. 显式等待
  3. 流畅等待

让我们深入了解每一个!

  1. 隐式等待 隐式等待是最简单的等待类型。它们告诉 WebDriver 在尝试查找某个元素(如果该元素不能立即可用)时要等待一定时间。设置时间后,它将全局应用于测试中的所有元素。 代码示例:
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

在此示例中,Selenium 在抛出 NoSuchElementException 之前将等待长达 10 秒的元素出现。等待适用于整个会话期间的每个元素查找。

优点:

易于实施。
适合简单的项目。
缺点:

即使不需要,也会减慢测试执行速度,因为它在全局范围内应用等待。
与其他等待类型一起使用时可能会导致不可预测的测试行为。

  1. 显式等待 显式等待允许您为某些元素设置条件。您可以告诉 WebDriver 等到满足特定条件后再继续。这种等待更加细化,让您可以更好地控制等待时间。

代码示例:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15));
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("example")));

在此示例中,WebDriver 将等待最多 15 秒,直到元素变得可见。如果该元素出现在 15 秒之前,则等待提前结束。

常见显式等待条件:

visibilityOfElementLocated()
elementToBeClickable()
enceOfElementLocated()
AlertIsPresent()
优点:

高度可定制,比隐式等待更高效。
仅在需要特定条件时等待。
缺点:

需要更多代码,这会增加复杂性。
在大型项目中,管理多个显式等待可能会变得很棘手。

  1. 流畅的等待 流畅等待是显式等待的高级版本。它们允许您定义最大等待时间、轮询间隔和处理异常。在处理需要频繁检查的动态内容时,流畅的等待非常有用。
Wait<WebDriver> fluentWait = new FluentWait<>(driver)
    .withTimeout(Duration.ofSeconds(20))
    .pollingEvery(Duration.ofMillis(500))
    .ignoring(NoSuchElementException.class);

WebElement element = fluentWait.until(driver -> driver.findElement(By.id("example")));

这里,WebDriver 将每 500 毫秒检查一次元素,并在超时前等待最多 20 秒。在此期间它也会忽略 NoSuchElementException。

优点:

为如何处理等待提供更大的灵活性和控制。
允许自定义轮询间隔和异常处理。
缺点:

设置和理解可能会更复杂。
过度定制可能会导致代码混乱且难以维护。
Selenium 4 Waits 的改进
Selenium 4 引入了一些改进,特别是在如何管理等待方面:

更好的语法:Selenium 4 使用 Duration 代替之前的 TimeUnit,使其更加直观和可读。
相对定位器:您现在可以等待与其他元素相关的元素(例如,左侧、附近等)。
增强的 WebDriverWait:Selenium 4 中的 WebDriverWait 类更加精简,更易于使用现代语法。

在 Selenium 4 中使用等待的最佳实践
使用显式等待而不是隐式等待:为了更好的控制和性能,更喜欢显式等待,尤其是在复杂的场景中。
避免混合隐式和显式等待:使用两者可能会导致不可预测的行为并增加等待时间。

设置合理的超时值:避免设置不必要的长时间等待。分析应用程序的行为以确定适当的等待时间。

对动态元素使用流畅等待:如果元素高度动态,请考虑使用具有轮询间隔的流畅等待来减少不必要的等待。

结论
在 Selenium 4 中有效处理等待对于编写稳定可靠的自动化测试至关重要。了解何时以及如何使用隐式、显式和流畅的等待可以极大地提高测试套件的稳健性。随着 Selenium 4 的改进,您拥有更强大的工具来管理同步问题。

以上是了解 Selenium 4 中的等待的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn