Ошибка Broken Pipe при запуске django-test с селеном

при запуске тестов django с селеном (без удаленного доступа, без xvfb) я всегда получаю следующее исключение:

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

Тесты выполняются с помощью LiveServerTestCase с использованием django 1.4 и selenium python-bindings 2.28.0 с Firefox WebDriver. У кого-нибудь есть идея, как это решить?


person PenthousePauper    schedule 20.12.2012    source источник
comment
Возможный дубликат Ошибка сломанной трубы selenium webdriver , когда между командами есть пробел?   -  person 200_success    schedule 18.07.2018


Ответы (1)


Убедитесь, что браузер, запрашивающий страницу, ожидает ответа.

Если я правильно помню, для этого есть команды selenium_client.implicitly_wait(sec) и selenium_client.set_page_load_timeout(sec), убедитесь, что вы их используете.

В противном случае сервер попытается записать в канал, который не работает, потому что браузер закрывает соединение до того, как ответ был отправлен.

person Tommaso Barbugli    schedule 20.12.2012
comment
Спасибо! Хотя selenium_client.waitForPageToLoad(ms) не существует в этой версии/привязках python, хитрость заключается в том, чтобы установить неявные тайм-ауты: selenium_client.implicitly_wait(sec) и selenium_client.set_page_load_timeout(sec) - person PenthousePauper; 21.12.2012
comment
Но это не так. selenium_client.waitForPageToLoad(ms) Нет. - person George Griffin; 22.03.2013