8

我正在使用 Selenium Web 驱动程序运行一些基本的功能性 Web 测试,并且在我的两个功能性 Web 测试用例中注意到了这个错误。测试用例最后都通过了,但我在控制台中得到了这个:

Exception happened during processing of request from ('127.0.0.1', 1169)
    data = self._sock.recv(self._rbufsize)
error: [Errno 10054] An existing connection was forcibly closed by the remote host
Traceback (most recent call last):
  File "C:\dev\django-projects\barbwire\venv\lib\site-packages\django\test\testcases.py", line 981, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:\Python27\Lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\Lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\dev\django-projects\barbwire\venv\lib\site-packages\django\core\servers\basehttp.py", line 139, in __init__
    super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  File "C:\Python27\Lib\SocketServer.py", line 638, in __init__
    self.handle()
  File "C:\Python27\Lib\wsgiref\simple_server.py", line 116, in handle
    self.raw_requestline = self.rfile.readline()
  File "C:\Python27\Lib\socket.py", line 447, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 10054] An existing connection was forcibly closed by the remote host
Traceback (most recent call last):
  File "C:\dev\django-projects\barbwire\venv\lib\site-packages\django\test\testcases.py", line 981, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:\Python27\Lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\Lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\dev\django-projects\barbwire\venv\lib\site-packages\django\core\servers\basehttp.py", line 139, in __init__
    super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  File "C:\Python27\Lib\SocketServer.py", line 638, in __init__
    self.handle()
  File "C:\Python27\Lib\wsgiref\simple_server.py", line 116, in handle
    self.raw_requestline = self.rfile.readline()
  File "C:\Python27\Lib\socket.py", line 447, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 1170)
----------------------------------------
Destroying test database for alias 'default'...

这是其中一个测试用例的示例:

def test_can_join_main_site(self):
    self.browser.get(self.live_server_url)
    self.browser.find_element_by_link_text('Register').click()
    time.sleep(5)
    self.browser.find_element_by_name('submit').click()
    time.sleep(5)

它运行完成但转储上述异常。这个想法是测试一个简单的注册页面。单击提交按钮后,页面重新显示并提示用户填写其他表单字段。正如预期的那样,一切似乎都正常工作,但为什么会出现错误?我错过了什么吗?

4

4 回答 4

8

用 127.0.0.1替换localhost对我不起作用,添加sleep只会减慢测试速度。在退出浏览器之前,我可以通过调用 refresh 来消除错误:

from selenium import webdriver
browser = webdriver.Firefox()
# do stuff with browser
browser.refresh()
browser.quit()

就我而言,是静态文件<link><script>标签的加载导致了问题。但是当我refresh在退出前添加时它就消失了。

于 2013-08-21T21:46:29.203 回答
5

使用 FireFox,我能够通过充分减慢关机过程来解决这个问题:

@classmethod
def tearDownClass(cls):
    time.sleep(3)
    cls.selenium.quit()
    time.sleep(3)
    super(TestClass, cls).tearDownClass()
于 2013-03-01T20:00:17.087 回答
4

localhost我通过127.0.0.1在 URL 中替换为解决了这个问题:

    url = self.live_server_url
    url = url.replace('localhost', '127.0.0.1')
    self.driver.get('%s%s' % (url, reverse('whatever')))

我在这里找到了解决方案:https ://code.djangoproject.com/ticket/15178

于 2013-01-24T00:22:46.753 回答
1

Django 调试工具栏会生成大量此类错误。卸载并重试

于 2014-02-28T16:39:01.563 回答