“连接中止”。,ConnectionResetError(104,“由对等方重置连接”)使用Selenium和ChromeDriver,并通过Python使用Chrome

“连接中止”。,ConnectionResetError(104,“由对等方重置连接”)使用Selenium和ChromeDriver,并通过Python使用Chrome,python,selenium,google-chrome,ubuntu,selenium-chromedriver,Python,Selenium,Google Chrome,Ubuntu,Selenium Chromedriver,下面的代码在循环中执行,其中打开10-15个本地.html文件,每个文件的图像保存为.png Ubuntu服务器16.04 ChromeDriver 2.41.578700 谷歌浏览器74.0.3729.108 硒3.141.0 Python 3.6 打开前两个文件并保存图像,但其余文件会导致: “连接已中止。”,ConnectionResetError104,“由对等方重置连接” 文件的路径都是正确的,更改要保存的图像的顺序不会产生任何影响 def _save_image(html_file_

下面的代码在循环中执行,其中打开10-15个本地.html文件,每个文件的图像保存为.png

Ubuntu服务器16.04 ChromeDriver 2.41.578700 谷歌浏览器74.0.3729.108 硒3.141.0 Python 3.6 打开前两个文件并保存图像,但其余文件会导致:

“连接已中止。”,ConnectionResetError104,“由对等方重置连接”

文件的路径都是正确的,更改要保存的图像的顺序不会产生任何影响

def _save_image(html_file_path, png_file_path, h=850, w=833):
    try:
        from selenium import webdriver
        from selenium.webdriver.chrome.options import Options
    except Exception as ex:
        raise Exception("Saving the plot as a .PNG requires *selenium* package to be installed. Please install selenium using *pip install selenium*.")

    options = Options()
    options.add_argument('--headless')
    options.add_argument('disable-infobars')
    options.add_argument('--disable-extensions')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    #options.add_argument('--disable-gpu')

    if os.name == 'nt':
        chrome_driver_path = os.path.dirname(__file__)
        chrome_driver_path = chrome_driver_path[:-3] + "chromedriver.exe"
    elif os.name == 'posix':
        chrome_driver_path = "/usr/bin/chromedriver"
    else:
        raise Exception("OS could not be detected, thus selenium could not be initialised properly.")
    driver = webdriver.Chrome(chrome_driver_path, chrome_options=options)
    driver.set_window_size(w, h)
    driver.get("file://"+html_file_path)
    time.sleep(5)
    driver.save_screenshot(png_file_path + ".png")
    driver.quit()
    time.sleep(5)

添加time.sleep5是为了检查错误是否是由于加载页面花费了很长时间造成的,将其增加到30秒,结果是相同的。由于技术要求,导入语句在功能范围内,该技术要求将在稍后阶段进行排序。

这很可能是因为您正在为新的chrome版本使用旧版本的chrome驱动程序


下载适用于您的chrome的最新chrome驱动程序,这很可能是因为您在新chrome版本中使用的是旧版本的chrome驱动程序

从以下错误消息下载适用于您的chrome浏览器的最新chrome驱动程序

('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
…表示ChromeDriver无法与WebBrowser进行通信,即Chrome浏览器会话

您的主要问题是所使用的二进制文件版本之间的不兼容,如下所示:

您使用的是chromedriver=2.41 的发行说明明确提到以下内容: 支持Chrome v67-69

您使用的是chrome=74.0 的发行说明明确提到以下内容: 支持ChromeV74

因此,ChromeDriver v2.41和Chrome浏览器v74.0之间存在明显的不匹配

解决方案 将ChromeDriver升级到当前级别。 将Chrome版本保持在ChromeV74级别。 始终在tearDown{}方法中调用driver.quit以正常关闭和销毁WebDriver和Web客户端实例。 您可以在中找到详细的讨论

此错误消息

('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
…表示ChromeDriver无法与WebBrowser进行通信,即Chrome浏览器会话

您的主要问题是所使用的二进制文件版本之间的不兼容,如下所示:

您使用的是chromedriver=2.41 的发行说明明确提到以下内容: 支持Chrome v67-69

您使用的是chrome=74.0 的发行说明明确提到以下内容: 支持ChromeV74

因此,ChromeDriver v2.41和Chrome浏览器v74.0之间存在明显的不匹配

解决方案 将ChromeDriver升级到当前级别。 将Chrome版本保持在ChromeV74级别。 始终在tearDown{}方法中调用driver.quit以正常关闭和销毁WebDriver和Web客户端实例。 您可以在中找到详细的讨论


感谢您指出版本问题。我已经将ChromeDriver升级到74.0.3729.6,这改善了情况,正在生成更多的图表。但是,仍然会出现“连接中止”、“ConnectionResetError104”、“由对等方重置连接”错误,现在这是随机的,即与原始文件中的最后一个x.html文件不同issue@DreX我需要再次调试您的代码,以找出更细微的问题。如果这一点或任何其他答案有用,请回答。找到问题的答案后,请将其标记为已接受,这样问题就不会没有答案。感谢您指出版本问题。我已经将ChromeDriver升级到74.0.3729.6,这改善了情况,正在生成更多的图表。但是,仍然会出现“连接中止”、“ConnectionResetError104”、“由对等方重置连接”错误,现在这是随机的,即与原始文件中的最后一个x.html文件不同issue@DreX我需要再次调试您的代码,以找出更细微的问题。如果这一点或任何其他答案有用,请回答。一旦找到问题的答案,请将其标记为已接受,这样问题就不会没有答案。