2012-12-20 9 views
8

beim Laufen django Tests mit Selen läuft (keine Fernbedienung, keine xvfb), hat sich immer die folgende Ausnahme:Rohrbruch Fehler beim django-Test mit Selen

Creating test database for alias 'default'... 

Traceback (most recent call last): 
File "/usr/lib/python2.7/wsgiref/handlers.py", line 86, in run 
self.finish_response() 
File "/usr/lib/python2.7/wsgiref/handlers.py", line 127, in finish_response 
self.write(data) 
File "/usr/lib/python2.7/wsgiref/handlers.py", line 210, in write 
self.send_headers() 
File "/usr/lib/python2.7/wsgiref/handlers.py", line 268, in send_headers 
self.send_preamble() 
File "/usr/lib/python2.7/wsgiref/handlers.py", line 192, in send_preamble 
'Date: %s\r\n' % format_date_time(time.time()) 
File "/usr/lib/python2.7/socket.py", line 324, in write 
---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 44089) 
self.flush() 
File "/usr/lib/python2.7/socket.py", line 303, in flush 
self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 
Traceback (most recent call last): 
File "/usr/local/lib/python2.7/dist-packages/django/test/testcases.py", line 981, in _handle_request_noblock 
self.process_request(request, client_address) 
File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request 
self.finish_request(request, client_address) 
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request 
self.RequestHandlerClass(request, client_address, self) 
File "/usr/local/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 139, in __init__ 
---------------------------------------- 
super(WSGIRequestHandler, self).__init__(*args, **kwargs) 
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__ 
self.finish() 
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish 
self.wfile.flush() 
File "/usr/lib/python2.7/socket.py", line 303, in flush 
self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 

Destroying test database for alias 'default'... 

Process finished with exit code 0 

Tests ausgeführt mit LiveServerTestCase mit django 1.4 und Selen Python-Bindings 2.28.0 mit Firefox WebDriver. Hat jemand eine Idee, wie man es löst?

Antwort

6

Stellen Sie sicher, dass der Browser, der die Seite anfordert, auf die Antwort wartet.

Wenn ich mich richtig erinnere, gibt es die selenium_client.implicitly_wait(sec) und selenium_client.set_page_load_timeout(sec) Befehle dafür, stellen Sie sicher, dass Sie es verwenden.

Wenn nicht, wird der Server versuchen, in eine beschädigte Pipe zu schreiben, weil der Browser die Verbindung schließt, bevor die Antwort gesendet wurde.

+2

Danke! Obwohl 'selen_client.waitForPageToLoad (ms)' in dieser Version/python-bindings nicht existiert, besteht der Trick darin, implizite Timeouts zu setzen: 'selen_client.implicitely_wait (sec)' und 'selen_client.set_page_load_timeout (sec)' – PenthousePauper

+0

@PenthousePauper bitte Markieren Sie die Antwort als richtig dann :) –

+4

Aber es ist nicht. selen_client.waitForPageToLoad (ms) Ist nicht da. –

Verwandte Themen