首页  >  文章  >  Java  >  我应该在 Selenium WebDriver 中使用显式等待而不是隐式等待吗?

我应该在 Selenium WebDriver 中使用显式等待而不是隐式等待吗?

Patricia Arquette
Patricia Arquette原创
2024-11-23 02:10:10132浏览

Should I Use Explicit Waits Instead of Implicit Waits in Selenium WebDriver?

Selenium Webdriver 中的显式与隐式等待

问题:

尽管使用 Selenium 的隐式等待等等,一个特定的元素仍未被检测到。是否建议采用显式等待?

答案:

是的,强烈建议始终使用显式等待而不是隐式等待。

隐式与显式等待

显式等待:

  • 明确定义和记录的行为
  • 在编程语言的上下文中本地执行
  • 适用于任何条件
  • 结果任一成功或超时错误
  • 可以定义元素缺失的条件为成功
  • 可自定义重试之间的延迟和要忽略的异常

隐式等待:

  • 行为模糊且糟糕记录
  • 在浏览器控制范围内远程执行
  • 仅限于“查找元素”方法
  • 返回找到或未找到的元素(超时后)
  • 不能超越全局超时进行定制

的优点显式等待

  • 可等待的条件具有更大的灵活性
  • 自定义超时和异常处理
  • 明确且清晰的代码以及定义的期望

示例代码

隐式等待:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

显式等待等待:

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement = wait.until(
  ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

结论

隐式等待提供有限的功能和不可靠的行为。相比之下,显式等待为动态网站测试提供了全面且可定制的解决方案。它们的好处远远超过了代码稍长的唯一缺点。因此,建议专门使用显式等待来进行可靠且可维护的自动化测试。

以上是我应该在 Selenium WebDriver 中使用显式等待而不是隐式等待吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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