Dom Selenium隐式等待与Thread.sleep()的比较

Dom Selenium隐式等待与Thread.sleep()的比较,dom,selenium-webdriver,Dom,Selenium Webdriver,根据selenium的说法,隐式等待会轮询DOM一段时间,以查看元素是否出现。我的理解是,它将在指定的时间内进行轮询,但如果某个元素之前出现,那么它将继续,而不再等待 我有一个方法可以在13秒内运行。当我将隐式等待设置为100秒时,需要213秒 driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 在这个方法中,我似乎等待了2次(每次100秒)。将隐式等待设置为0或100不会影响我的方法。在这两种情况下,它们都正确

根据selenium的说法,隐式等待会轮询DOM一段时间,以查看元素是否出现。我的理解是,它将在指定的时间内进行轮询,但如果某个元素之前出现,那么它将继续,而不再等待

我有一个方法可以在13秒内运行。当我将隐式等待设置为100秒时,需要213秒

driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
在这个方法中,我似乎等待了2次(每次100秒)。将隐式等待设置为0或100不会影响我的方法。在这两种情况下,它们都正确完成

我的问题是。我认为隐式等待等待元素出现的时间最短。是这样吗?还是我做错了什么

此外,为什么它要等待2次,而它显然不需要等待?(即使我将等待设置为0,我的方法也会正确完成)

简短回答:

隐式等待-它的全局设置适用于所有元素,如果元素在指定时间之前出现,脚本将开始执行,否则脚本将抛出
NoSuchElementException
。在设置方法中使用的最佳方法。仅通过.findelement()影响


Thread.sleep()
-它将为脚本占用睡眠时间,这不是在脚本中使用的好方法,因为它是无条件睡眠。

如果驱动程序转到另一个url,隐式等待是否仍然有效?或者我需要再次调用它吗?ma,在运行期间有效,无论URL如何。请注意,对于findElements,可以预期size()==0。但Selenium将等待最后指定的时间。如果在测试时加载页面,则在findElements之前减少隐式等待时间(例如1秒),然后在findElements之后重置为正常,将导致更快的执行时间。可能重复