9

while running django tests with selenium (no remote, no xvfb), I always get the following exception:

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 are run with LiveServerTestCase using django 1.4 and selenium python-bindings 2.28.0 with Firefox WebDriver. Does someone have an idea, on how to resolve it?

PenthousePauper
  • 722
  • 3
  • 9
  • 20
  • Possible duplicate of [Broken pipe error selenium webdriver, when there is a gap between commands?](https://stackoverflow.com/questions/51239512/broken-pipe-error-selenium-webdriver-when-there-is-a-gap-between-commands) – 200_success Jul 18 '18 at 03:53

1 Answers1

6

Make sure that the browser requesting the page is waiting for the response.

If i remember correctly there is the selenium_client.implicitly_wait(sec) and selenium_client.set_page_load_timeout(sec) commands for that, make sure you are using it.

If not the server will try to write to a pipe that is broken because the browser close the connection before the response was sent.

miki725
  • 27,207
  • 17
  • 105
  • 121
Tommaso Barbugli
  • 11,781
  • 2
  • 42
  • 41
  • 2
    Thanks! Though `selenium_client.waitForPageToLoad(ms)` doesn't exist in that version/python-bindings, the trick is to set implicit timeouts: `selenium_client.implicitly_wait(sec)` and `selenium_client.set_page_load_timeout(sec)` – PenthousePauper Dec 20 '12 at 20:28