Python selenium ConnectionResetError:[WinError 10054]远程主机强行关闭现有连接

时间:2017-07-27 05:53:53

标签: python python-3.x selenium selenium-chromedriver

我正在使用python 3.6并使用最新版本的chromedriver,我尝试使用旧版本的chromedriver,我得到同样的问题重新启动我的电脑,同样的问题。这是我为重现错误而运行的代码:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://google.com")

完整错误:

    driver.get("https://google.com")
  File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 268, in get
    self.execute(Command.GET, {'url': url})
  File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 254, in execute
    response = self.command_executor.execute(driver_command, params)
  File "C:\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 464, in execute
    return self._request(command_info[0], url, body=data)
  File "C:\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 488, in _request
    resp = self._conn.getresponse()
  File "C:\Python36\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Python36\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Python36\lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Python36\lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

4 个答案:

答案 0 :(得分:1)

在driver.get(“https://google.com”)之前输入time.sleep(3),这将修复您的错误。然后,如果你像我一样,你会得到一个不同的错误。

答案 1 :(得分:1)

Seth和Jack1990的上述回答对我对使用python的IEDriverServer进行故障排除很有帮助。我曾尝试过Adhithiya的建议,但这对我的问题没有帮助。

This GitHub site对我很有帮助。需要注意的部分是“必需的配置”。我首先遵循了这一点,但是在声明中,“在IE 7或更高版本的Windows Vista或Windows 7上,必须将每个区域的保护模式设置设为相同的值。该值可以打开或关闭,例如只要每个区域都相同。”我发现我也必须针对Windows 10执行此操作。实际上,在这一点上,python错误消息非常清晰。它们都需要启用或禁用。它们不必处于同一级别。

此外,我确实不得不在time.sleep(x)中使用x的值。在以下代码中,此睡眠命令是driver = webdriver.Ie()driver.get("http://testwisely.com/demo")之间的命令。如果为我设置为5,则ie驱动程序将首先触发本地主机,并抱怨无法访问该主机,然后它连接到我想要它的页面(大多数时间!)。

好消息是,其他3种网络浏览器也不错!我发现针对Chrome,Firefox和Edge(在Windows 10中)运行webdrivers的driver.quit()命令成功关闭了这些浏览器,而iedriver版本没有关闭IE。

下面是我的代码,以防您想将其用于实验。

from selenium import webdriver
import time

browser_to_use = "Edge" # "Chrome" "Firefox" "Ie" 

if browser_to_use == "Chrome":
    driver = webdriver.Chrome()
elif browser_to_use == "Firefox":
    driver = webdriver.Firefox()
elif browser_to_use == "Ie":  # This sucks!
    driver = webdriver.Ie()
    time.sleep(5)
elif browser_to_use == "Edge":
    driver = webdriver.Edge()

driver.get("http://testwisely.com/demo")
time.sleep(5)
driver.quit()

答案 2 :(得分:0)

Chromedriver可能在后台运行,请检查任务管理器中的后台进程

如果您发现多个chromedriver实例正在运行,请手动终止所有进程并尝试再次运行该程序。

你应该好好去。

答案 3 :(得分:0)

下载旧版本(3.8)也可以解决此问题,但是测试运行速度非常慢...

您可以在此处找到链接:https://github.com/jovanbulck/sgx-step/tree/master/app/foreshadow