Selenium и Heroku: urllib3.exceptions.ProtocolError: ('Соединение прервано.', ConnectionResetError (104, 'Соединение сброшено одноранговым узлом'))

Настраивать:

  • селен: 3.141.0
  • python: 3.6.7
  • heroku-stack: heroku-18
  • headless-chrome: установлен пакет сборки v71.0.3578.80
  • chromedriver: установлен пакет сборки v2.44.609551

Я получаю эту ошибку при использовании селена в героку:

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

Я погуглил, но не повезло. Ошибка возникает в последней строке этого кода.


Код

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)

person madtyn    schedule 28.11.2018    source источник


Ответы (1)


Это сообщение об ошибке ...

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

... означает, что ChromeDriver в режиме Headless не смог запустить / создать новый WebBrowser, то есть браузер Chrome сеанс.

Некоторая информация о версиях используемых вами двоичных файлов помогла бы нам лучше проанализировать ошибку. Однако эту проблему urllib3 можно решить по нескольким причинам, как указано ниже:

Этот флаг больше не нужен в Linux или macOS. Это станет ненужным в Windows, как только SwiftShader не сможет выполнить утверждение в Windows в безголовый режим исправлен.

Решение

  • Обновите ChromeDriver до текущей ChromeDriver v2.44. уровень.
  • Держите версию Chrome между уровнями Chrome v69-71. (согласно примечаниям к выпуску ChromeDriver v2.44)
  • Очистите свою рабочую область проекта с помощью IDE и перестройте свой проект только с использованием необходимых зависимостей.
  • Если ваша базовая версия веб-клиента слишком старая, удалите ее и установите последнюю версию GA и выпущенную версию веб-клиента.
  • Выполните перезагрузку системы.
  • Выполните свой @Test.
person DebanjanB    schedule 11.12.2018
comment
Heroku - это облачная платформа как услуга, которую я использую в качестве сервера. Обновил версию для chromedriver в посте. Я не знаю, как получить безголовую версию с сервера, но предоставляемая Heroku, она должна быть довольно современной. Я не могу делать IDE в Heroku, но я вношу те изменения, которые вы мне сказали в исходном коде, просматриваю двоичные пути и пути к драйверам и перезагружаю сервер Heroku. Не знаю, что делать с @Test. А пока пытаюсь, спасибо. :-) - person madtyn; 11.12.2018
comment
Похоже, некоторые из ваших советов сработали. Теперь я получил другое исключение SessionNotCreatedException: сеанс не создан на вкладке сбоя. Я сейчас над этим работаю. Спасибо. - person madtyn; 11.12.2018
comment
@madtyn Для ошибки SessionNotCreatedException: сеанс не создан на вкладке сбоя проверьте раздел Обновление в моем ответе в обсуждении org.openqa.selenium.SessionNotCreatedException: сеанс не создан исключение из-за ошибки вкладки при выполнении с сервера Jenkins CI < / а> - person DebanjanB; 12.12.2018