【问题标题】:What is difference between Implicit wait and Explicit wait in Selenium WebDriver? [duplicate]Selenium WebDriver 中的隐式等待和显式等待有什么区别? [复制]
【发布时间】:2014-05-04 14:19:04
【问题描述】:

Selenium WebDriver 中有隐式和显式等待。它们有什么区别?

请分享有关 Selenium WebDriver 的知识。请展示具有隐式和显式等待的实时示例。

【问题讨论】:

标签: java selenium selenium-webdriver


【解决方案1】:

查看以下链接:

  • Implicit Wait - 它通过轮询 DOM 来指示 Web 驱动程序等待一段时间。一旦您声明了隐式等待,它将在 Web 驱动程序实例的整个生命周期中可用。默认情况下,该值为 0。如果您设置更长的默认值,则该行为将根据浏览器/驱动程序实现定期轮询 DOM。

  • Explicit Wait + ExpectedConditions - 这是自定义的。如果我们希望执行等待一段时间直到达到某个条件,就会使用它。

【讨论】:

  • “轮询 DOM”是什么意思?我对“民意调查”的行为感到困惑。谢谢
  • 通过“轮询 DOM”,他的意思是“定期再次读取 dom 以检查是否重新加载”。轮询行为取决于特定的驱动程序/浏览器实现,但通常每 0.5 秒进行一次隐式等待(如果您将隐式等待设置为 ~1s 或更大)
【解决方案2】:

隐式等待 --

隐式等待基本上是您告诉 WebDriver 您想要查看的延迟的方式,如果 WebDriver 正在寻找的指定 Web 元素不存在。因此,在这种情况下,您告诉 WebDriver 如果指定元素在 UI (DOM) 上不可用,它应该等待 10 秒。

显式等待--

显式等待是仅限于特定 Web 元素的智能等待。使用显式等待,您基本上是在告诉 WebDriver 在放弃之前最多等待 X 个时间单位。

【讨论】:

【解决方案3】:

区别:

1) 为 webDriver 对象的整个持续时间设置隐式等待。假设,您想等待一段时间,比如说在网页上的每个元素或很多元素加载之前 5 秒。 现在,您不想一次又一次地编写相同的代码。因此,隐式等待。 但是,如果您只想等待一个元素,请使用显式。

2) 您不仅需要显示网页元素,还需要可点击或满足网页元素的某些其他属性。这种灵活性只能通过显式等待来提供。如果在网页上加载动态数据,则特别有用。您可以使用显式等待来等待该元素被开发(而不仅仅是显示在 DOM 上)。

【讨论】:

【解决方案4】:

为上述解决方案添加另一种观点。

隐式等待: 创建后,在 WebDriver 对象死亡之前一直处于活动状态。并且对于所有操作都是通用的。

然而,
显式等待,可以根据 webElement 行为为特定操作声明。它的好处是可以自定义轮询时间和满足条件。
例如,我们声明了 10 秒的隐式等待,但一个元素花费的时间超过了 20 秒,有时可能会出现在 5 秒,所以在这种情况下,声明了显式等待。

【讨论】:

    【解决方案5】:

    隐式等待用于在整个测试脚本中的每个连续测试步骤/命令之间提供默认等待时间。因此,只有在执行上一个测试步骤/命令后经过指定的时间后,才会执行后续测试步骤。

    显式等待用于停止执行,直到满足特定条件或经过最大时间为止。与隐式等待不同,显式等待仅适用于特定实例。

    【讨论】:

      【解决方案6】:

      我的想法,

      隐式等待:如果设置了等待,它将等待每个 findElement/findElements 调用的指定时间。如果操作未完成,它将抛出异常。

      显式等待:如果设置了等待,当提供的条件为真时它将等待并继续下一步,否则在等待指定时间后将抛出异常。显式等待仅在指定位置适用一次。

      【讨论】:

      • 哦,所以多次使用implicitly_wait 没有意义吗?我以为implicitly_wait 将脚本暂停了 N 秒……哈哈,所以implicitly_wait 只需要设置一次?并且一旦设置,那么网络驱动程序将在操作之间等待那么多秒?
      猜你喜欢
      • 2017-04-19
      • 1970-01-01
      • 2019-01-04
      • 2018-01-24
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      相关资源
      最近更新 更多