Java SeleniumWebDriver中隐式等待和显式等待的区别是什么?

Java SeleniumWebDriver中隐式等待和显式等待的区别是什么?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,SeleniumWebDriver中有隐式和显式等待。他们之间有什么区别 请分享有关Selenium WebDriver的知识。请显示隐式和显式等待的实时示例。检查以下链接: -它通过轮询DOM指示web驱动程序等待一段时间。声明隐式等待后,它将在web驱动程序实例的整个生命周期中可用。默认情况下,该值将为0。如果设置更长的默认值,则该行为将根据浏览器/驱动程序实现定期轮询DOM +-这是自定义的。如果我们希望执行等待一段时间直到达到某个条件,则将使用它 隐式等待 隐式等待基本上是告诉WebD

SeleniumWebDriver中有隐式和显式等待。他们之间有什么区别

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

检查以下链接:

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

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


    • 隐式等待

      隐式等待基本上是告诉WebDriver如果WebDriver要查找的指定web元素不存在,则要查看的延迟。因此,在本例中,您告诉WebDriver,如果指定的元素在UI(DOM)上不可用,它应该等待10秒

      显式等待--


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

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

      隐式等待:在创建时处于活动状态,直到WebDriver对象死亡。并且对于所有操作来说都很常见

      鉴于,
      根据webElement行为,可以为特定操作声明显式等待。它具有定制轮询时间和满足条件的优点。
      例如,我们声明隐式等待为10秒,但一个元素的等待时间超过10秒,例如20秒,有时可能出现在5秒,因此在这种情况下,声明显式等待。

      差异:

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

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

      我的想法

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


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

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


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

      不需要添加到文档中,请参考,或者文档清楚地解释了这两种等待的作用-但没有解释何时使用其中一种,或者为什么需要隐式等待,或者为什么隐式等待在webdriver的生命周期中是固定的。您可以在selenium的文档中看到更多信息,对于实时示例,我想参考:@JimEvans我完全同意您的观点。@sircapsalot,检查一下:“轮询DOM”是什么意思?我被“投票”的行为弄糊涂了。ThxBy“poll the DOM”的意思是“定期再次读取DOM以检查是否重新加载”。轮询行为取决于特定的驱动程序/浏览器实现,但隐式等待通常每0.5秒一次(如果将隐式等待设置为~1s或更高),文档中只有一点是这样的:ohhh所以隐式地使用
      是没有意义的。\u wait
      不止一次?我以为
      隐式地\u wait
      将脚本暂停了N秒。。。lol所以隐式地等待只需要设置一次?一旦设置好,web驱动程序将在操作之间等待那么多秒?