隐含等待Vs有什么区别 在selenium webdriver中显式等待?

请分享有关selenium webdriver的知识。 请显示实时示例。

检查以下链接:

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

  • Explicit Wait + ExpectedConditions – 这是自定义条件。 如果我们希望执行等待一段时间直到达到某些条件,它将被使用。

隐含的等待

隐式等待基本上是告诉WebDriver如果WebDriver没有查找指定的Web元素,您希望看到的延迟的方式。 所以在这种情况下,你告诉WebDriver,如果UI(DOM)上没有指定的元素,它应该等待10秒。

明确的等待

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

区别:

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

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

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

隐式等待:创建时,直到WebDriver对象死亡为止。 并且对所有操作都很常见。

然而,
可以根据webElement行为为特定操作声明显式等待 。 它具有定制轮询时间和满足条件的好处。
例如,我们声明隐式等待10秒,但是一个元素需要更多,比如20秒,有时可能会出现在5秒,因此在这种情况下,会声明显式等待。

我的想法,

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

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

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

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