Почему не запускается браузер через 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 шт):
При такой ошибке 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.