【问题标题】:Do implicit wait polls the DOM every 500 milliseconds just like explicit wait does?隐式等待是否像显式等待一样每 500 毫秒轮询一次 DOM?
【发布时间】:2016-05-07 09:24:42
【问题描述】:

我一直在阅读有关隐式和显式等待的所有帖子。我真的很抱歉再次发布这个问题,但是现有的帖子都没有回答我的问题,或者我可能没有正确理解这个概念。

我能够理解显式等待的概念,但我真正不明白的是"An implicit wait is to tell Web-driver to poll the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available."这句话是否意味着Web-driver每500毫秒轮询一次DOM以找到元素(直到它成功返回) 就像显式等待一样?如果是,如何增加执行时间?

PS:我很抱歉再次发布这个问题,正如我告诉你的那样,有很多文章提供了不同的信息,这让我很困惑。

【问题讨论】:

标签: selenium selenium-webdriver


【解决方案1】:

我认为隐式等待更关心这样的要求,如果元素需要几秒钟才能出现在屏幕上,我们就可以了。这是我们必须进行隐式等待的时间。隐式的默认等待时间为零。如果我们不声明,那么它会抛出Element Not Found Exception。 (最好给更多的秒,以降低互联网速度,缓慢的应用程序响应)

我实际上创建了一个场景,我们可以确认隐式等待会连续检查 DOM(您可以调用轮询):

执行后置条件(如验证文本)而不执行前置条件(如提交按钮)。由于我们没有通过 script-selenium 找不到元素点击按钮,所以它仍然不会抛出 Element Not Found Exception 并等待 5min(隐式等待集)完成。

然后,我会在 1 分钟内点击按钮显示网页上的文字。立即,该步骤通过并继续执行其余的步骤。这证实了 - 隐式等待间歇性地轮询 DOM,否则它应该等待 5 分钟来检查元素(但这并没有发生)。

进入轮询间隔 - 根据我的观察,这是不到一秒的时间

【讨论】:

    【解决方案2】:

    当页面上的任何元素不是立即可见时,隐式等待将强制驱动程序等待指定的时间。因此,对于所有不立即可见的元素,隐式等待将隐式等待指定的时间,从而大大增加了执行时间。经过指定的时间后,如果元素可见,则它将开始执行。隐式等待中没有轮询。

    而在显式等待中,它将一直等待直到满足条件。如果条件满足,它将停止等待并开始执行。在这种类型中,它将轮询 500 毫秒以检查条件。

    希望这可以澄清您的问题。

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2013-07-13
      • 2023-04-08
      • 2021-03-25
      • 1970-01-01
      • 2013-02-16
      相关资源
      最近更新 更多