2013-07-07 43 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版本密切相關,並且協議可能在某些時候發生了變化)