2013-07-07 38 views
2

我试图使用Python硒脚本的Firefox,以在其网站上给出的例子:硒:_wait_until_connectable暂停无限期

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一个无限循环。

什么似乎导致这个问题,我如何让硒让Firefox变得“可连接”?

我浏览了firefox_binary.py源代码,并注意到它在注释中提到了“扩展”。我应该在Firefox中安装一些可以交互的扩展吗?

+0

硒是直接从皮普,和Firefox是每晚。 – corazza

回答

4

不要每夜使用Firefox。

Firefox在大多数版本上做了一些改动,Selenium需要在Firefox升级后赶上。

CHANGES

报价:

硒2.32

  • 支持FF20本地活动

硒2.31

  • 支持FF19本地事件

看到了吗?硒总是需要赶上新的Firefox(例如本地事件)。假设你的Selenium是最新的2.33。0,那么可能尝试降级你的Firefox(每晚25,所以降级到21应该工作,20肯定会工作)。

如果你的硒是不是最新的,先升级由

pip install -U selenium 
+0

已接受!您可能需要考虑更改您的用户名;) – corazza

0

确保您的FirefoxSelenium是最新的,并且您的Selenium版本支持您的浏览器。你可能遇到的情况是Selenium启动了一个特定分机的Firefox实例,名为Webdriver。这反过来,打开一个特定的端口您的python 硒客户端正试图连接发送命令。 这是您的python硒客户端和浏览器相互通信的方式。

我有一个类似的问题,有时Firefox的扩展没有打开端口渲染python卡住等待。

您可以尝试设置一个硒服务器并连接到它而不是创建一个新的firefox实例,或者一旦确定它是扩展或python绑定中的回归,请尝试降级firefox和selenium(don' t只降级其中的一个,因为扩展可能与Firefox版本密切相关,并且协议可能在某些时候发生了变化)