Python (Selenium) с браузером MS Edge: «Соединение прервано», ConnectionResetError (10054, ...) «Веб-драйвер Microsoft перестал работать» - PullRequest
0 голосов
/ 06 февраля 2020

Каждый раз, когда я запускаю свой код python, браузер Edge открывается, но не загружает URL. Затем система Windows отобразит диалоговое окно с текстом:

Веб-драйвер Microsoft перестал работать.

Проблема привела к тому, что программа перестала работать правильно. Windows закроет программу и сообщит вам, если решение доступно.

Мой Python код: (работает на PyCharm):

# Locate the web driver for Edge browser
driver = webdriver.Edge(executable_path = 'C:/Users/username/webdrivers/MicrosoftWebDriver.exe')

# Open the website
driver.get("https://google.com")

Предупреждение / сообщение об ошибке из PyCharm:

Трассировка (последний последний вызов): файл "02042020.py", строка 14, в driver = webdriver.Edge (executetable_path = 'C: / Users / username / webdrivers /MicrosoftWebDriver.exe ') Файл "C: \ Users \ имя пользователя \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ selenium \ webdriver \ edge \ webdriver.py", строка 61, в init RemoteWebDriver. init (Файл "C: \ Users \ имя пользователя \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py", строка 157, в init self.start_session (functions, browser_profile) Файл "C: \ Users \ имя пользователя \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py", строка 252 , в start_session response = self.execute (Command.NEW_SESSION, параметры) Файл "C: \ Users \ username \ Pycharm Проекты \ Web_Scraping \ venv \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 319, в файле execute response = self.command_executor.execute (driver_command, params) Файл" C: \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ selenium \ webdriver \ remote \ remote_connection.py ", строка 374, в файле execute выполнить self._request (command_info [0], url, body = data) Файл" C : \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ selenium \ webdriver \ remote \ remote_connection.py ", строка 402, в _request resp = http.request (метод, URL, тело = тело, заголовки = заголовки) Файл "C: \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ request.py", строка 79, в запросе возвращает self.request_encode_body (файл "C: \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ request.py ", строка 171, в request_encode_body возвращают файл self.urlopen (метод, URL, ** extra_kw)" C: \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ Lib \ сайт-пак kages \ urllib3 \ poolmanager.py ", строка 330, в urlopen response = conn.urlopen (метод, u.request_uri, ** kw) Файл" C: \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ lib \ site -packages \ urllib3 \ connectionpool.py ", строка 719, в urlopen retries = retries.increment (Файл" C: \ Users \ имя пользователя \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ util \ retry. py ", строка 400, в инкременте увеличить файл six.reraise (тип (ошибка), ошибка, _stacktrace)" C: \ Users \ имя пользователя \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ packages \ six .py ", строка 734, в ререйзе увеличить файл value.with_traceback (tb)" C: \ Users \ имя пользователя \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ connectionpool.py ", строка 665, в urlopen httplib_response = self._make_request (Файл "C: \ Users \ username \ PycharmProjects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 421, в _make_request six.raise_from (e, None) Файл "", строка 3, в файле повышение_от файла "C: \ Users \ username \ PycharmPr ojects \ Web_Scraping \ venv \ lib \ site-packages \ urllib3 \ connectionpool.py ", строка 416, в файле _make_request httplib_response = conn.getresponse ()" C: \ Users \ имя пользователя \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ http \ client.py ", строка 1322, в файле getresponse response.begin ()" C: \ Users \ имя пользователя \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ http \ client.py " строка 303, в начальной версии, состояние, причина = self._read_status () файл "C: \ Users \ имя пользователя \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ http \ client.py", строка 264 в файле _read_status line = str (файл self.fp.readline (_MAXLINE + 1), "iso-8859-1") "C: \ Users \ имя пользователя \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ socket.py ", строка 669, в readinto возвращает self._sock.recv_into (b)

urllib3.exceptions.ProtocolError: ('Соединение прервано.', ConnectionResetError (10054, 'Существующее соединение) был принудительно закрыт удаленным хостом ', Нет, 10054, Нет))

Сведения об окружении:

  • Версия веб-драйвера Edge: Выпуск 17134 Версия: 6.17134 | Поддерживаемая версия Microsoft Edge: 17.17134 (загружено с: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)
  • Версия Selenium: 3.141.0
  • Браузер Microsoft Edge Версия: Microsoft Edge HTML 18.18363

Я пытался устранить неполадки, но это не сработало.

Мои проблемы:

Включить разработчика Режим, в котором будет установлена ​​соответствующая версия WebDriver. Вкл Windows:

Settings > Update & Security > For developers > select "Developer Mode".

Запуск CMD в качестве администратора для установки через DISM:

DISM.exe / Online / Add-Capability /CapabilityName:Microsoft.WebDriver~~~ ~ 0.0.1.0

Там написано:

Deployment Image Servicing and Management tool
Version: 10.0.18362.1

Image Version: 10.0.18363.592

[==========================100.0%==========================]
The operation completed successfully.

Я повторял эти шаги много раз, но это не сработало. Я загрузил веб-драйвер для Chrome и переключил свой код Python на браузер Chrome, и он заработал. К сожалению, проблема в том, что для этой конкретной задачи Microsoft Edge является обязательным браузером. Может кто-нибудь, пожалуйста, посоветуйте? Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020

Возможно, эта проблема возникает из-за того, что вы используете версию Microsoft WebDriver, не соответствующую версии браузера Microsoft Edge. Насколько я знаю, когда мы устанавливаем веб-драйвер Microsoft Edge через DISM, по умолчанию мы могли найти веб-драйвер из следующих папок:

"C:\\Windows\\SysWOW64\\MicrosoftWebDriver.exe"

и

"C:\\Windows\\System32\\MicrosoftWebDriver.exe",

Вы могли бы проверьте его и попробуйте использовать этот путь в своем коде.

0 голосов
/ 06 февраля 2020

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

urllib3.exceptions.ProtocolError: ('Соединение прервано.', ConnectionResetError (10054, 'Существующее соединение было принудительно закрыто удаленным хостом', Нет, 10054, Нет))

Веб-драйвер Microsoft перестал работать.

Из-за проблемы программа перестала работать правильно. Windows закроет программу и сообщит вам, если решение доступно.

... означает, что MicrosoftWebDriver не смог запустить / создать новый WebBrowser т.е. Браузер Microsoft Edge * Сессия 1016 *.


Анализ

Эта ошибка может возникать из-за многочисленных факторов, а некоторые из возможных причин и решений приведены ниже. :

  • Необходимо передать абсолютный путь из MicrosoftWebDriver через клавишу executable_path в любом из способы:

    • Внутри двойных кавычек, экранирование от обратной косой черты:

      driver = webdriver.Edge(executable_path="C://Users//username//webdrivers//MicrosoftWebDriver.exe")
      
    • В одиночных кавычках и косых чертах, с предшествующим необработанным ( r) переключатель:

      driver = webdriver.Edge(executable_path=r'C:\Users\username\webdrivers\MicrosoftWebDriver.exe')
      
  • Эта ошибка также наблюдается при несовместимости между версией двоичных файлов, которыми вы являетесь используя клиентские версии Selenium , WebDriver вариант версии и Веб-браузер версия. См. Сведения .

  • Вы используете:
    • Версия веб-драйвера Edge: выпуск 17134 Версия: 6.17134
    • Поддерживаемая версия Microsoft Edge: 17.17134
    • Версия браузера Microsoft Edge: Microsoft Edge HTML 18.18363
  • Согласно Руководство разработчика Microsoft Edge :

Edge HTML 18 включает в себя следующие новые и обновленные функции, поставляемые в текущем выпуске платформы Microsoft Edge, начиная с Windows 10 октября 2018 года Обновление (10/2018, сборка 17763) ). Об изменениях в спецификациях c Windows Insider Preview можно посмотреть в Microsoft Edge Changelog и Что нового в Edge HTML.


Решение

Убедитесь, что:

  • Версия веб-драйвера Edge обновлена ​​до: Release 17763

Дополнительные шаги

  • Включить режим разработчика, который установит соответствующую версию WebDriver.

    Open Settings app > Go to Update & Security > For Developer and then select "Developer Mode".
    
  • Вы также можете установить автономная версия WebDriver одним из двух способов:

    • Выполните поиск «Управление дополнительными функциями» в меню «Пуск», затем выберите «Добавить компонент», «WebDriver».
    • Установите через DISM, выполнив следующую команду в командной строке с повышенными привилегиями:

      DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0
      

Примечание : при установке MicrosoftWebDriver с помощью команды DISM, по умолчанию веб-драйвер устанавливается в следующих подкаталогах:

  • * 11 32 * 64 бит:
    C:\\Windows\\SysWOW64\\MicrosoftWebDriver.exe
    
  • 32 бит:

    C:\\Windows\\System32\\MicrosoftWebDriver.exe
    

Ссылки

Вы можете найти пару соответствующих обсуждений в:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...