Selenium和Heroku:urllib3.exceptions.ProtocolError :(“连接中止。”,ConnectionResetError(104,“对等方重置连接”))

时间:2018-11-28 14:36:57

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

设置:

  • :3.141.0
  • python :3.6.7
  • heroku堆栈:heroku-18
  • headless-chrome :已安装v71.0.3578.80 buildpack
  • chromedriver :已安装v2.44.609551 buildpack

在heroku中使用硒时出现此错误:

urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

我用Google搜索,但是没有运气。错误发生在该代码的最后一行。


代码

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

UA = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36' \
     '(KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
DRIVER_PATH = '/app/.chromedriver/bin/chromedriver'

chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = '/app/.apt/usr/bin/google-chrome'
chrome_options.add_argument(f'--user-agent={UA}')
chrome_options.add_argument(f'--proxy-server=http://my_private_proxy.com:my_port')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')

chrome = webdriver.Chrome(executable_path=DRIVER_PATH, options=options)

1 个答案:

答案 0 :(得分:3)

此错误消息...

urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

...表示 Headless 模式下的 ChromeDriver 无法启动/生成新的 WebBrowser ,即 Chrome浏览器< / strong>会话。

一些有关您使用的二进制文件版本的信息将帮助我们以更好的方式分析错误。但是,由于以下几个原因,可以忽略此 urllib3 问题:

  

在Linux或macOS上不再需要此标志。修复SwiftShader fails an assert on Windows in headless mode后,Windows上将不再需要它。

解决方案

  • ChromeDriver 升级到当前的ChromeDriver v2.44级别。
  • Chrome 版本保持在 Chrome v69-71 级别之间。 (as per ChromeDriver v2.44 release notes
  • 通过您的 IDE
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。
  • 如果您的基本 Web客户端版本太旧,则将其卸载并安装最新版本的 Web客户端 GA。
  • 进行系统重启
  • 执行您的@Test