Selenium Webdriver Python - 隐含的等待对我来说并不清楚

时间:2016-09-21 23:54:27

标签: python selenium selenium-webdriver

其他人提出了这个问题并且有一些答案,但他们没有澄清一个时刻。如果未立即找到元素,则隐式等待将等待指定的时间,然后在等待指定的时间后将运行错误。这是否意味着在第一秒内对元素进行隐式等待检查,然后等待指定的时间并再次检查最后一秒?

我知道显式等待每隔500毫秒轮询一次DOM。如果测试需要更长的时间,隐式等待的实际用途是什么?

2 个答案:

答案 0 :(得分:2)

隐含等待是selenium的内部信息。初始化时设置一次。然后,每次Web驱动程序尝试查找元素时,它将持续查找elmemt(带有一些轮询),直到“隐式等待”计时器到期。如果找到该元素,则它将恢复执行,否则抛出NoSuchElement异常。所以它在第一秒发现它会从等待循环中出来,如果它在最后一秒没有找到元素它会抛出异常。

显式等待用于需要等待某个条件为True的场景。例如,元素的可见性。它的范围仅限于特定的电话。

您可以查找Selenium documentation了解更多详情和示例

答案 1 :(得分:0)

如果隐式等待驱动程序等待直到元素出现在DOM中,但同时它不保证元素可用。可能无法使用元素(如按钮单击)或元素可能没有定义当时的形状。

就我们使用selenium而言,我们对页面上的所有元素都不感兴趣。所有元素的形状可能都不均匀。但是DOM中所有元素的存在对于让其他元素正常工作非常重要。所以隐含的等待。

使用任何元素时,我们使用显式等待(WebDriverwait)或FluentWait。