Сообщение об ошибке: «Исполняемый файл chromedriver должен быть доступен в пути»

172

Я использую Селен с Python и загрузил хромедрайвер для моего компьютера с Windows с этого сайта: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

После загрузки zip-файла я распаковал zip-файл в папку загрузок. Затем я помещаю путь к исполняемому двоичному файлу (C: \ Users \ michael \ Downloads \ chromedriver_win32) в переменную среды "Path".

Тем не менее, когда я запускаю следующий код:

  from selenium import webdriver

  driver = webdriver.Chrome()

... Я получаю следующее сообщение об ошибке:

WebDriverException: Message: 'chromedriver' executable needs to be available in the path. Please look at     http://docs.seleniumhq.org/download/#thirdPartyDrivers and read up at http://code.google.com/p/selenium/wiki/ChromeDriver

Но - как объяснено выше - исполняемый файл находится (!) В пути ... что здесь происходит?

устойчивый прогресс
источник
20
Попробуйте скопировать chromedriver.exeв тот же каталог, что и ваш скрипт Python.
Малик Брахими
4
Установка через Chocolatey добавит его в путь choco install chromedriver.
Что я делаю
для пользователя, столкнувшегося с этой проблемой в pycharm, рестарт решит ее
Charles Chow
Я согласен с ответом ImNt. Хотя я хотел бы добавить, что для тех, кто использует virtualenv, вы должны запустить python в своем файле venv от имени администратора, используя следующий пример формата: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Пинеда
@MalikBrahimi Я искал это решение везде, и ни один из них не работал, пока я не нашел ваш комментарий. Большое спасибо
user2720864

Ответы:

180

Вы можете проверить, действительно ли он находится в PATH, если вы откроете cmd и chromedriverвведете (если ваш исполняемый файл chromedriver по-прежнему назван так), и нажмите Enter. Если Starting ChromeDriver 2.15.322448появляется, PATH установлен соответствующим образом и что-то еще идет не так.

В качестве альтернативы вы можете использовать прямой путь к chromedriver, как это:

 driver = webdriver.Chrome('/path/to/chromedriver') 

Итак, в вашем конкретном случае:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
lmNt
источник
3
Спасибо за ответ: «Запуск ChromeDriver 2.15.322448» появился. «Разрешены только локальные соединения». также появился. ... но я думаю это нормально? .... Одна вещь, которая меня интересует, заключается в следующем: на сайте была доступна только 32-битная версия chromedriver .... но это должно нормально работать с моими 64-битными окнами, не так ли?
stable_progress
@steady_progress Да, все в порядке. И это будет работать с 64-битной Windows; Я использую это сам. Я подозреваю, что, возможно, проблема вызвана селеновой версией? Какой у вас установлен? Вы установили его с помощью pip?
LNNT
Вы пытались использовать прямой путь к драйверу при вызове веб-драйвера, как я упоминал в ответе? Сбой с той же ошибкой?
LNNT
4
При добавлении веб-драйверов в PATH, независимо от операционной системы, включайте только каталог, в котором хранится ваш веб-драйвер, а не исполняемый файл. Пример: PATH = $ PATH: / path / to / webdriver / folder, а не PATH = $ PATH: / path / to / webdriver / chromedriver. Кроме того, использование PATH гораздо более переносимо, чем передача местоположения в ваш вызов webdriver.Chrome (), поскольку мы всегда можем предполагать, что PATH установлен правильно везде, где выполняется код, но мы не можем предполагать, что их файловая структура настроена одинаково ,
Тля
2
попытался использовать то же решение, но получил эту ошибку: WebDriverException: Сообщение: исполняемый файл «chromedriver.exe» может иметь неправильные разрешения. Пожалуйста, смотрите sites.google.com/a/chromium.org/chromedriver/home
Йогеш
153

Я вижу, что обсуждения все еще говорят о старом способе установки chromedriver, загружая двоичный файл и настраивая путь вручную.

Это можно сделать автоматически с помощью webdriver-manager

pip install webdriver-manager

Теперь приведенный выше код в вопросе будет работать просто с изменением ниже,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

То же самое можно использовать для установки Firefox, Edge и т. Д. Двоичных файлов.

Navarasu
источник
@ Наварасу со всем уважением, зачем кому-то следовать что-то из 3.6, когда ток равен 3.7. В следующий раз было бы неплохо прямо сказать, что это для 3.6 .... Спасибо
Azy Sır
5
это потрясающе, так как оно тоже актуально
Лесли Олдридж
1
Преимущество этого решения в том, что оно обладает большей гибкостью, чем другие решения, основанные на настройке конкретного пути, что я считаю нецелесообразным с точки зрения использования сценария на нескольких машинах.
ИБРАХИМ
14

Та же ситуация с выпуском Pycharm Community Edition, поэтому, как и для cmd, вы должны перезапустить ваш ide для перезагрузки переменных пути. Перезапустите свой ide, и все должно быть в порядке.

Андреа Биселло
источник
2
Спасибо. У меня была такая же проблема в Visual Studios. Просто перезапустил IDE и все
заработало
У меня тоже сработало.
Карто
14

В Linux (Ubuntu или Debian):

sudo apt install chromium-chromedriver

В MacOS установите https://brew.sh/, затем выполните

brew cask install chromedriver
Борис
источник
Затем используйте: driver = webdriver.Chrome ('/ usr / lib / chromium-browser / chromedriver') .. без изменения $ PATH
алхимия
@alchemy ты уверен, что тебе нужно это сделать? Насколько я помню, driver = webdriver.Chrome()у меня все работало нормально.
Борис
Привет Борис, да, не уверен почему .. даже после добавления в PATH это не сработало без этого. Я уверен, что правильная настройка пути была бы лучше, но мне просто нужно быстро сделать одну вещь с Chromedriver
алхимия
9

Мы должны добавить строку пути, начинающуюся с буквы rперед строкой, для необработанной строки. Я проверял этот способ, и он работает.

driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
James0007
источник
3

Некоторый дополнительный ввод / разъяснение для будущих читателей этой темы, чтобы избежать возиться с PATH env. переменная на уровне Windows и перезапуск системы Windows: (копия моего ответа с https://stackoverflow.com/a/49851498/9083077 применительно к Chrome):

(1) Загрузите chromedriver (как описано в этой теме ранее) и поместите (разархивированный) chromedriver.exe в X: \ Folder \ of \ your \ choice

(2) Пример кода Python:

import os;
os.environ["PATH"] += os.pathsep + r'X:\Folder\of\your\choice';

from selenium import webdriver;
browser = webdriver.Chrome();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

Примечания: (1) Пример кода (в указанном ответе) может занять около 5 секунд, чтобы открыть браузер Firefox для указанного URL. (2) Консоль python будет отображать следующую ошибку, если на указанном URL-адресе еще не запущен сервер или не выполняется страница с заголовком, содержащим строку «Django»: assert «Django» в browser.title AssertionError

Снидхи Софпро
источник
3

Для Linux и OSX

Шаг 1: Загрузите chromedriver

# You can find more recent/older versions at http://chromedriver.storage.googleapis.com/
# Also make sure to pick the right driver, based on your Operating System
wget http://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_mac64.zip

Шаг 2: Добавьте хромедрайвер в /usr/local/bin

unzip chromedriver_mac64.zip
cp chromedriver /usr/local/bin

Теперь вы должны быть в состоянии бежать

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://localhost:8000')

без проблем

Гиоргос Мириантос
источник
Было четко заявлено, что он использует Windows, это для Linux.
misantroop
1
@misantroop Я обновил свой ответ, чтобы прояснить это.
Гиоргос Мириантос
2

Когда вы распаковываете chromedriver, пожалуйста, укажите точное местоположение, чтобы вы могли отследить его позже. Ниже вы получаете правильный хром-драйвер для вашей ОС, а затем распаковываете его в точное место, что может быть указано в качестве аргумента в дальнейшем в вашем коде.

wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/

Harshdeep Singh
источник
3
Или чтобы /usr/local/bin/установить глобально.
Jeppe
2

Если вы работаете с каркасом робота RIDE. Затем вы можете скачать Chromedriver.exeего с официального сайта и сохранить этот файл .exe в C:\Python27\Scriptsкаталоге. Теперь укажите этот путь как переменную среды, например. C:\Python27\Scripts\chromedriver.exe,

Перезагрузите компьютер и повторите тест. Вы не получите эту проблему снова.

Рахул Тивари
источник
2

Согласно инструкции , при создании экземпляра webdriver необходимо указать путь к ChromeDriver. Например:

driver = webdriver.Chrome('/path/to/chromedriver')
AnnaSummerShine
источник
Если вы прокрутите эти инструкции вправо, появится комментарий «Необязательный аргумент, если он не указан, будет искать путь». Но, по крайней мере, некоторые версии веб-драйвера, по-видимому, проверяют любой хром-драйвер, который они находят в пути, и если он не «доволен» им (неправильная версия и т. Д.), Он не будет его использовать (если не будет принудительно попытаться все равно установить этот параметр). Он будет продолжать искать лучший вариант, а потом жаловаться, если не сможет его найти. («Подходящий хромэдривер не найден» был бы лучшим сообщением, чем «Не найдено ни одного хромэдривер».)
Сайлас С. Браун
2

Прежде чем добавить хромедрайвер в свой путь, убедитесь, что это та же версия, что и в вашем браузере.

Если нет, вам нужно будет соответствовать версии: либо обновить / понизить ваш Chrome, и обновить / понизить ваш веб-драйвер.

Я рекомендую как можно больше обновлять вашу версию Chrome и использовать соответствующий веб-драйвер.

Чтобы обновить Chrome:

  • В правом верхнем углу нажмите на три точки.
  • нажмите help->About Google Chrome
  • обновить версию и перезапустить Chrome

Затем загрузите совместимую версию здесь: http://chromedriver.chromium.org/downloads .

Примечание: новейший хромедрайвер не всегда соответствует новейшей версии хрома!

Теперь вы можете добавить его в PATH:

  1. создайте новую папку где-нибудь на вашем компьютере, где вы будете размещать свои веб-драйверы. Я создал папку с именем webdriversвC:\Program Files

  2. Скопируйте путь к папке. В моем случае это былоC:\Program Files\webdrivers

  3. щелкните правой кнопкой мыши на this PC-> properties:

введите описание изображения здесь

  1. По правому клику Advanced System settings
  2. щелчок Environment Variables
  3. В System variables, нажмите pathи нажмитеedit
  4. щелчок new
  5. вставьте путь, который вы скопировали ранее
  6. нажмите OK во всех окнах

Это оно! Я использовал Pycharm, и мне пришлось снова открыть его. Может быть, то же самое с другими IDE или терминалами.

Алон Гулдман
источник
1

Можно попытаться перезагрузить компьютер, если он не работает, если вы уверены, что PATH установлен правильно.

В моем случае на Windows 7 я всегда получал ошибку на WebDriverException: Сообщение: для chromedriver, gecodriver, IEDriverServer. Я уверен, что у меня правильный путь. Перезагрузите компьютер, все работает

learningBunny
источник
1

Лучший способ наверняка здесь:

Скачайте и разархивируйте chromedriver и поместите «chromedriver.exe» в C: \ Python27 \ Scripts, и тогда вам не нужно будет указывать путь к драйверу, просто

driver= webdriver.Chrome()

Вам не нужно добавлять пути или что-то еще

нирупам капур
источник
0

В моем случае эта ошибка исчезает, когда я копирую файл chromedriver в папку c: \ Windows. Это потому, что каталог Windows находится в пути, который скрипт Python проверяет на доступность chromedriver.

Хамид
источник
0

Если вы используете удаленный интерпретатор, вы также должны проверить, определен ли его исполняемый PATH. В моем случае переключение с удаленного интерпретатора Docker на локальный интерпретатор решило проблему.

Рафал
источник
0

Я столкнулся с той же проблемой, что и у вас. Я использую PyCharm для написания программ, и я думаю, что проблема заключается в настройке среды в PyCharm, а не в ОС. Я решил проблему, перейдя к настройке скрипта, а затем вручную редактируя переменную PATH в переменных среды. Надеюсь, вы найдете это полезным!

sia1998
источник
другой вариант - переместить ваш хромедривер непосредственно в / usr / local / bin, тогда вам совсем не нужно добавлять путь
sia1998
0

Добавьте веб-драйвер (chromedriver.exe или geckodriver.exe) здесь C: \ Windows . Это сработало в моем случае

Сугуреш Соппиматх
источник
0

Наилучшим способом может быть получение текущего каталога и добавление к нему оставшегося адреса. Как этот код (Word в Windows. В Linux вы можете использовать что-то строковое pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


источник
0

Когда я скачал chromedriver.exe, я просто переместил его в папку PATH C: \ Windows \ System32 \ chromedriver.exe и столкнулся с точно такой же проблемой.

Для меня решение было просто изменить папку в PATH, поэтому я просто переместил ее в папку bin сообщества Pycharm, которая также была в PATH. например:

  • C: \ Windows \ System32 \ chromedriver.exe -> дал мне исключение
  • C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> работал нормально
Денис Имамович
источник
0

Была эта проблема с Mac Mojave, работающей с тестовой средой Robot и Chrome 77. Это решило проблему. Престижность @Navarasu за указание на правильный путь.

$ pip install webdriver-manager --user # install webdriver-manager lib for python
$ python # open python prompt

Далее в приглашении python:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

# ctrl+d to exit

Это приводит к следующей ошибке:

Checking for mac64 chromedriver:xx.x.xxxx.xx in cache
There is no cached driver. Downloading new one...
Trying to download new driver from http://chromedriver.storage.googleapis.com/xx.x.xxxx.xx/chromedriver_mac64.zip
...
TypeError: makedirs() got an unexpected keyword argument 'exist_ok'
  • Теперь я получил новейшую ссылку для скачивания
    • Скачайте и распакуйте chromedriver туда, куда вы хотите
    • Например: ~/chromedriver/chromedriver

Откройте ~/.bash_profileс редактором и добавьте:

export PATH="$HOME/chromedriver:$PATH"

Откройте новое окно терминала, та-да 🎉

sampoh
источник
0

У меня была эта проблема на Webdriver 3.8.0 (Chrome 73.0.3683.103 и ChromeDriver 73.0.3683.68). Проблема исчезла после того, как я сделал

pip install -U selenium

обновить Webdriver до 3.14.1.

Сайлас С. Браун
источник
0

Проверьте путь вашего драйвера Chrome, он может не получить его оттуда. Просто скопируйте и вставьте местоположение драйвера в код.

ChandyShot
источник
-3

(для пользователей Mac) У меня та же проблема, но я решил ее простым способом: вы должны поместить свой chromedriver.exe в ту же папку в исполняемый скрипт, а затем в pyhton написать эту инструкцию:

импорт ОС

os.environ ["PATH"] + = os.pathsep + r'X: / your / folder / script / '

walid_data
источник
2
Решение, которое вы предлагаете, точно такое же, как и у другого пользователя. Пожалуйста, обратите внимание на другие ответы перед публикацией.
Никита Князев,
Разве @walid_data не говорит об этом, чтобы указать, что это может быть проблема только для окон?
Бен