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

时间:2014-03-26 09:29:40

标签: java selenium selenium-webdriver

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

6 个答案:

答案 0 :(得分:27)

检查以下链接:

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

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

答案 1 :(得分:15)

隐含等待 -

隐式等待基本上是告诉WebDriver如果指定Web元素不存在WebDriver需要的延迟。所以在这种情况下,你告诉WebDriver,如果UI(DOM)上没有指定的元素,它应该等待10秒。

明确等待 -

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

答案 2 :(得分:12)

的差异:

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

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

答案 3 :(得分:8)

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

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

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

答案 4 :(得分:1)

我的想法,

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

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

答案 5 :(得分:1)

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

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