【问题标题】:Selenium Webdriver Python - implicit wait is not clear to meSelenium Webdriver Python - 我不清楚隐式等待
【发布时间】:2016-09-21 23:54:26
【问题描述】:

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

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

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    隐式等待是 selenium 内部的。您在初始化时设置一次。然后,每次网络驱动程序尝试查找一个元素时,它都会不断地(通过一些轮询)查找该 elmemt,直到“隐式等待”计时器到期。如果找到该元素,则它将继续执行,否则将引发 NoSuchElement 异常。所以它会在第一秒找到它,它会从等待循环中出来,否则如果它在最后一秒没有找到元素,它会抛出异常。

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-24
        • 2023-03-05
        • 2018-03-27
        • 2013-12-03
        • 1970-01-01
        • 2017-04-19
        相关资源
        最近更新 更多