微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

硒-_wait_until_connectable无限期暂停

我正在尝试将Python与Selenium结合使用来编写Firefox脚本,并在其网站上提供示例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.send_keys("selenium")
elem.send_keys(Keys.RETURN)
assert "Google" in driver.title
driver.close()

当我运行此代码时,它成功打开了一个新的Firefox窗口,但是什么也没有发生.浏览器反应灵敏,可以加载其他页面,但是Selenium出于某种原因只是拒绝与其合作.

当我退出Python脚本时,输出如下:

^CTraceback (most recent call last):
  File "ha.py", line 5, in <module>
    driver = webdriver.Firefox()
  File "/usr/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 46, in __init__
    self.binary, timeout),
  File "/usr/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 46, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 44, in launch_browser
    self._wait_until_connectable() 
  File "/usr/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 89, in _wait_until_connectable
    time.sleep(1)
KeyboardInterrupt

似乎它在函数_wait_until_connectable中进入了无限循环.

似乎是什么引起了这个问题,如何使Selenium使Firefox变得“可连接”?

我浏览了firefox_binary.py源代码,发现它在注释中提到了“扩展名”.我应该在Firefox中安装一些扩展以实现交互吗?

解决方法:

不要每晚使用Firefox.

Firefox对大多数版本进行了一些更改,Selenium需要在Firefox升级后赶上.

引用CHANGES

Selenium 2.32

  • Support for FF20 Native Events

Selenium 2.31

  • Support for FF19 native events

看到那个吗? Selenium始终需要赶上新的Firefox(例如,本地事件).
假设您的Selenium是最新的2.33.0,则可以尝试将Firefox降级(夜间为25,因此降级到21应该可以,而20肯定可以).

如果您的硒不是最新的,请先升级

pip install -U selenium

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐