Почему не запускается браузер через webdriver_manager?

Обычный код:

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

chrome_service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=chrome_service)

driver.get('https://github.com/SergeyPirogov/webdriver_manager')
time.sleep(100)

При его запуске всегда выдает ошибку:

Traceback (most recent call last):
  File "D:\Program Files\JetBrains\PycharmProjects\test\main.py", line 7, in <module>
    driver = webdriver.Chrome(service=chrome_service)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Program Files\Python\Python312\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
    super().__init__(
  File "D:\Program Files\Python\Python312\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 55, in __init__
    self.service.start()
  File "D:\Program Files\Python\Python312\Lib\site-packages\selenium\webdriver\common\service.py", line 98, in start
    self._start_process(self._path)
  File "D:\Program Files\Python\Python312\Lib\site-packages\selenium\webdriver\common\service.py", line 208, in _start_process
    self.process = subprocess.Popen(
                   ^^^^^^^^^^^^^^^^^
  File "D:\Program Files\Python\Python312\Lib\subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "D:\Program Files\Python\Python312\Lib\subprocess.py", line 1538, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [WinError 193] %1 не является приложением Win32

Инициализировать драйвер я пробовал разными способами, но ошибка остаётся, вот пример другой инициализации:

import time

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

driver.get('https://github.com/SergeyPirogov/webdriver_manager')
time.sleep(100)

Помогите, в чём проблема?


Ответы (1 шт):

Автор решения: mrgervant

При такой ошибке ChromeDriver может не скачиваться или скачиваться неверно. Для исключения данной проблемы можно скачать вручную chromedriver_win32.zip с официального сайта (последняя стабильная версия) и распаковать из него chromedriver.exe, чтобы передать ссылку на готовый exe.

В примере также прописал создание пути на файл через pathlib во избежание схожих проблем - файл chromedriver.exe лежит рядом с запускаемым скриптом:

import time
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

BASE_DIR = Path(__file__).resolve().parent
pathToChromeDriver = f'{BASE_DIR}\\chromedriver.exe'

chrome_service = ChromeService(executable_path=pathToChromeDriver)
driver = webdriver.Chrome(service=chrome_service)

driver.get('https://github.com/SergeyPirogov/webdriver_manager')
time.sleep(100)

Минус данного подхода - необходимо самостоятельно проверять совместимость драйвера с установленным на ПК браузером. Так, при настройке тестового примера пришлось обновить Chrome до версии 127.

→ Ссылка