Django Selenium Timeout Error

I'm having trouble starting SeleniumRC from Django. I can run the sample code provided by Selenium docs and the python selenium client docs is just fine in the Python shell without running Django (so without manage.py), but when I actually try to run Selenium from django TestCase or from Django shell, I I get a timeout error. Here is the code I'm trying to run:

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("/") 

Running with control registration manage.py.TestSelenium raises the following error:

 ====================================================================== 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'... 

The strange thing is that even though the error is triggered and Python stops, the SeleniumRC server does start Firefox, but then I can not run further Selenium commands because Django stopped. This is the result of 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 

Does anyone have any ideas?

+4
source share
2 answers

If anyone else has this problem, I was able to solve it by increasing the socket timeout in the setUp method.

+3
source

This will do the trick with a timeout value in seconds with a float:

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

Refer to python stdlib docs

+1
source

Source: https://habr.com/ru/post/1341221/


All Articles