隐式等待每500毫秒轮询一次DOM,就像显式等待一样吗?

时间:2016-05-07 09:24:42

标签: selenium selenium-webdriver

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

我能够理解显式等待概念,但我真正不理解的是语句"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驱动程序每500毫秒轮询一次DOM以查找元素(直到它成功返回)就像显式等待一样?如果是,它如何增加执行时间?

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

2 个答案:

答案 0 :(得分:1)

我认为隐含等待更关注需求,如果元素需要几秒钟才能进入屏幕,我们没关系。这是我们必须进行隐式等待的时间。隐式的默认等待时间为零。如果我们不声明那么它将抛出 Element Not Found Exception 。 (更好地为更少的互联网速度,缓慢的应用程序响应提供更多的秒数)

我已经创建了一个场景,我们可以确认隐式等待连续检查DOM(你可以调用轮询):

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

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

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

答案 1 :(得分:-1)

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

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

希望这能澄清你的问题。