首页 >Java >java教程 >Selenium WebDriver 中的隐式等待与显式等待:您应该选择哪一个?

Selenium WebDriver 中的隐式等待与显式等待:您应该选择哪一个?

Susan Sarandon
Susan Sarandon原创
2024-11-02 21:37:30825浏览

Implicit vs. Explicit Wait in Selenium WebDriver: Which Should You Choose?

Selenium-WebDriver:隐式等待与显式等待,哪个更好?

在 Java Seleneium-WebDriver 中,您可能会遇到应用程序需要时间来加载其内容的情况用户界面,导致元素定位失败。为了解决这个问题,您有两个等待选项:隐式等待和显式等待。

隐式等待:

如代码片段中所示,您将隐式等待设置为 2秒:

<code class="java">driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);</code>

这意味着驱动程序将在引发错误之前等待最多 2 秒以使元素变得可用。

显式等待:

显式等待需要在驱动程序继续之前满足特定条件。 WebDriverWait.until 方法可用于此目的:

<code class="java">WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement textbox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("textbox")));</code>

这里,驱动程序将等待最多 10 秒,让 ID 为“textbox”的元素变得可见,然后再继续。

哪个更好?

隐式等待和显式等待之间的选择取决于情况:

  • 显式等待:当您有特定的条件需要检查,并希望避免不必要地浪费时间。
  • 隐式等待:可以用作隐式等待场景的备份,但对于长时间等待来说并不理想。

建议:

对于像您这样的情况,不能保证在特定时间范围内元素存在,使用显式等待,特别是流畅的等待,例如推荐使用答案中提供的。

<code class="java">public WebElement fluentWait(final By locator) {
    // Fluent wait implementation provided in the answer...
}

WebElement textbox = fluentWait(By.id("textbox"));</code>

流畅的等待允许您自定义超时和轮询间隔,提供更大的灵活性并防止不必要的延迟。

以上是Selenium WebDriver 中的隐式等待与显式等待:您应该选择哪一个?的详细内容。更多信息请关注PHP中文网其他相关文章!

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