【问题标题】:Webdriver Ignores Wait - Firefox, PythonWebdriver 忽略等待 - Firefox、Python
【发布时间】:2014-11-25 20:19:35
【问题描述】:

最近将我的操作系统更改为 Debian Wheezy(KDE) 我的网络驱动程序后, 行为古怪。 (firefox的python 2.7编码,所有模块都是最新的。)

它完全忽略了等待命令,例如implicitly_wait()。 如果急需等待才能​​访问,这将是一个很大的问题 加载网页元素。

一个肮脏的解决方法是使用 time.sleep(),它是有效的,但 当然不是 webdriver 的预期用途。

以下代码说明了我的问题:

from selenium import webdriver
import time

driver = webdriver.Firefox()

driver.get('http://www.google.com')

tc = time.clock()
tw = time.time()

driver.implicitly_wait(60)  # should halt here for 60s

print "CPU time: ", time.clock() - tc
print "Wall time: ", time.time() - tw

driver.quit()

脚本运行结束,没有任何错误消息,但 等待语句被完全忽略。

输出:

CPU time:  0.0
Wall time:  1.1845741272

我无法解释这种神秘的行为或任何起点 寻找答案。

因此,我热烈欢迎任何建议或解决方案。 谢谢!

【问题讨论】:

    标签: python firefox selenium-webdriver webdriver wait


    【解决方案1】:

    不,implicitly_wait() 不会在您调用它的那一刻停止/停止执行。它在每个会话中调用一次,并设置 selenium 查找元素或执行命令时使用的隐式超时,引用 documentation:

    implicitly_wait(time_to_wait)

    设置粘性超时以隐式等待找到一个元素, 或要完成的命令。这个方法只需要调用一次 每个会话。要设置调用 execute_async_script 的超时时间,请参见 设置脚本超时。

    我同意方法名称有点混乱,set_implicit_timeout() 可能是更好的选择。

    另见:

    【讨论】:

    • 好的。现在我明白了。有趣的是,我之前使用的系统在硬件方面是如此缓慢,以至于我误以为在使用它时会产生隐含等待()的想象效果的固有延迟。我确实认为它应该以与 time.sleep() 相同的方式使用。感谢您更新我的理解,alecxe!
    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多