2011-02-24 65 views
4

我無法從Django運行SeleniumRC。我可以在沒有運行Django的情況下運行Selenium docspython selenium client docs提供的示例代碼,但沒有運行Django(所以沒有manage.py),但是當我實際嘗試從django TestCase或Django shell運行Selenium時,我得到超時錯誤。 這裏是我試圖運行代碼:從Django運行Selenium的超時錯誤


from selenium import selenium 
from django.test import TestCase 

class TestSelenium(TestCase): 
    def setUp(self): 
     self.verificationErrors = [] 
     self.selenium = selenium("localhost", 4444, "*firefox", "http://127.0.0.1:8000/") 
     self.selenium.start() 

    def test_foo(self): 
     sel = self.selenium 
     sel.open("/") 

與manage.py測試registration.TestSelenium運行產生以下錯誤:


====================================================================== 
ERROR: test_testformmaintainsdata (registration.tests.TestSelenium) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/sam/Documents/dev/app/CustomMade/registration/tests.py", line 158, in setUp 
    self.selenium.start() 
    File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 189, in start 
    result = self.get_string("getNewBrowserSession", start_args) 
    File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 223, in get_string 
    result = self.do_command(verb, args) 
    File "/usr/local/lib/python2.6/dist-packages/selenium/selenium.py", line 214, in do_command 
    response = conn.getresponse() 
    File "/usr/lib/python2.6/httplib.py", line 990, in getresponse 
    response.begin() 
    File "/usr/lib/python2.6/httplib.py", line 391, in begin 
    version, status, reason = self._read_status() 
    File "/usr/lib/python2.6/httplib.py", line 349, in _read_status 
    line = self.fp.readline() 
    File "/usr/lib/python2.6/socket.py", line 427, in readline 
    data = recv(1) 
timeout: timed out 

---------------------------------------------------------------------- 
Ran 1 test in 12.475s 

FAILED (errors=1) 
Destroying test database 'default'... 

奇怪的是,即使是錯誤拋出和Python停止,SeleniumRC服務器確實啓動Firefox,但是自從Django停止後,我無法運行更多的Selenium命令。這是SeleniumServer的輸出:


14:21:48.362 INFO - Checking Resource aliases 
14:21:48.369 INFO - Command request: getNewBrowserSession[*firefox, http://127.0.0.1:8000/, ] on session null 
14:21:48.372 INFO - creating new remote session 
14:21:48.443 INFO - Allocated session a3ea05a3d0eb4956ba69a67583ea49ba for http://127.0.0.1:8000/, launching... 
14:21:48.533 INFO - Preparing Firefox profile... 
14:21:51.473 INFO - Launching Firefox... 
14:21:55.904 INFO - Got result: OK,a3ea05a3d0eb4956ba69a67583ea49ba on session a3ea05a3d0eb4956ba69a67583ea49ba 

任何人有什麼想法?

回答

3

如果其他人有這個問題,我可以通過增加setUp方法中的套接字超時來解決它。

1

這將這樣的伎倆在浮動秒的超時值:

import socket 

from selenium import selenium 
from django.test import TestCase 

class TestSelenium(TestCase): 
    def setUp(self): 
     socket.settimeout(30) 
     # ... 
     self.selenium.start() 

參考python stdlib docs