Повідомлення про помилку: на шляху має бути доступний виконуваний файл "Chromeedriver"


171

Я використовую селен із python і завантажив хромодрук для свого комп'ютера з Windows з цього веб-сайту: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Після завантаження zip-файлу я розпакував zip-файл у свою папку для завантаження. Потім я поклав шлях до виконуваного двійкового файлу (C: \ Users \ michael \ Downloads \ chromedriver_win32) у змінну середовища "Шлях".

Однак, коли я запускаю такий код:

  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
Установка з допомогою шоколадного додасть його в шляху, choco install chromedriver.
WhatIsHeDoing

Користувач зіткнувся з цією проблемою в pycharm, перезапуск вирішить її
Чарльз Чоу

Я згоден з відповіддю ImNt. Хоча я хотів би додати, що для тих, хто використовує virtualenv, слід запустити python у своєму файлі venv як адміністратор, використовуючи такий приклад формату: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Пінеда

@MalikBrahimi Я шукав це рішення скрізь, і жоден з них насправді не працював, поки я не знайшов ваш коментар. Велике спасибі
користувач2720864

Відповіді:


178

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

Крім того, ви можете використовувати прямий шлях до хромедрівера так:

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

Отже, у вашому конкретному випадку:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")

3
Дякуємо за відповідь: "Запуск ChromeDriver 2.15.322448" з'явився. "Дозволені лише локальні з'єднання." також з’явились. ... Але я думаю, це нормально? .... Мені було цікаво одне: на веб-сайті була доступна лише 32-бітна версія хромодрайвера .... але це має добре працювати з моїми 64-бітовими вікнами, чи не так?
steady_progress

@steady_progress Так, це нормально. І це буде працювати з 64-бітовою Windows; Я сам це використовую. Я підозрюю, що може спричинити проблему селенова версія? Який ви встановили? Ви встановили це за допомогою pip?
lmNt

Ви намагалися використовувати прямий шлях до драйвера під час виклику веб-драйвера, як я вже згадував у відповіді? Невдало це було з тією ж помилкою?
lmNt

4
Додаючи веб-драйвери до свого PATH, незалежно від ОС, включайте лише той каталог, де зберігається ваш веб-драйвер, а не виконуваний файл. Приклад: PATH = $ PATH: / path / to / webdriver / folder, not PATH = $ PATH: / path / to / webdriver / chromedriver. Крім того, використання PATH набагато портативніше, ніж передача місця розташування у ваш виклик webdriver.Chrome (), оскільки ми завжди можемо вважати, що PATH встановлений правильно, де б не запускався ваш код, але ми не можемо припустити, що їх файлова структура налаштована однаково .
Подорожник

2
спробував використати те саме рішення, але отримав цю помилку: WebDriverException: Повідомлення: виконуваний файл 'chromedriver.exe' може мати неправильні дозволи. Будь ласка , см sites.google.com/a/chromium.org/chromedriver/home
Yogesh

151

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

Це можна зробити автоматично, використовуючи webdriver-менеджер

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
Хороша річ у цьому рішенні - це те, що він має більшу гнучкість, ніж інші рішення, засновані на конкретних налаштуваннях шляху, що я вважаю недоцільним з точки зору використання скрипту на кількох машинах.
IBRAHIM

14

Така сама ситуація з виданням спільноти pycharm, тому, як і для cmd, ви повинні перезапустити свою ідею, щоб перезавантажити змінні шляху. Перезавантажте свою ідею, і це має бути добре.


2
Дякую. У мене була така ж проблема у Visual Studios. Просто перезапустили IDE і він працював :) Дякую
DollarAkshay

Працював і для мене.
CARTOS

13

У Linux (Ubuntu або Debian):

sudo apt install chromium-chromedriver

На macOS встановіть https://brew.sh/, тоді зробіть

brew cask install chromedriver

Потім використовуйте: driver = webdriver.Chrome ('/ usr / lib / Chrome-браузер / chromedriver') .. без зміни $ PATH
алхімія

@alchemy Ви впевнені, що вам потрібно це зробити? Як я пам’ятаю це, driver = webdriver.Chrome()мені добре працювали.
Борис

Привіт, Борисе, так, не знаю, чому .. навіть після додавання в PATH він не працював без цього. Я впевнений, що правильне налаштування шляху було б краще, але мені просто потрібно зробити одне з Chromedriver швидко
алхімія

9

Ми повинні додати рядок шляху, починаючи з букви rперед рядком, для необробленого рядка. Я перевірив цей спосіб, і він працює.

driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")

3

Деякі додаткові введення / уточнення для майбутніх читачів цієї теми, щоб уникнути повороту з PATH env. змінна на рівні Windows та перезапуск системи Windows: (копія моєї відповіді з https://stackoverflow.com/a/49851498/9083077 відповідно до Chrome):

(1) Завантажте Chromeedriver (як описано в цій темі раніше) та помістіть (unzipped) 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: Завантажте хромодрук

# 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 Я оновив свою відповідь, щоб зробити це зрозумілим.
Giorgos Myrianthous

2

Коли ви розкручуєте хромодрук, вкажіть, будь ласка, вкажіть точне місце, щоб пізніше це було відстежено. Нижче ви отримуєте потрібний хромодрук для вашої ОС, а потім розпаковуєте його до точного місця, яке може бути подано як аргумент згодом у вашому коді.

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


3
Або /usr/local/bin/встановити глобально.
Jeppe

2

Якщо ви працюєте з роботом рамки RIDE. Потім ви можете завантажити Chromedriver.exeйого з офіційного веб-сайту і зберегти цей .exe файл у C:\Python27\Scriptsкаталозі. Тепер згадайте цей шлях як змінну вашого середовища, наприклад.C:\Python27\Scripts\chromedriver.exe.

Перезавантажте комп’ютер і знову запустіть тестування. Ви знову не отримаєте цю проблему.


2

Згідно з інструкцією , вам потрібно включити шлях до ChromeDriver при створенні інстанції webdriver.Chrome, наприклад:

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

Якщо прокрутити ці вказівки праворуч, з'явиться коментар із записом "Необов’язковий аргумент, якщо не вказано, буде шукати шлях". Але, принаймні, деякі версії webdriver, схоже, перевіряють будь-який хромедрівер, який вони знаходять на шляху, і якщо він не "задоволений" ним (неправильна версія тощо), він не використовуватиме його (якщо тільки не змушений все-таки спробувати встановити цей параметр). Він збереже шлях пошуку для кращої версії, а потім скаржиться, якщо не зможе його знайти. ("Жодного відповідного хромодрука не знайдено" було б краще повідомлення, ніж "жодного хромодрука не знайдено".)
Silas S. Brown

2

Перш ніж додати хромовідвід у свій шлях, переконайтеся, що це та сама версія, що і ваш браузер.

Якщо ні, вам знадобиться відповідати версіям: або оновити / понизити хром, і оновити / знизити веб-привід.

Я рекомендую максимально оновити свою хромовану версію та відповідати веб-драйверу.

Щоб оновити хром:

  • У верхньому правому куті натисніть на три точки.
  • натисніть 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. натисніть кнопку ОК на всіх вікнах

Це воно! Я використовував піхарму, і мені довелося її знову відкрити. Можливо, те ж саме з іншими IDE або терміналами.


1

Неможливо спробувати перезапустити комп'ютер, якщо він не працює, якщо ви повністю впевнені, що PATH встановлений правильно.

У моєму випадку в Windows 7 я завжди отримував помилку на WebDriverException: Повідомлення: для chromedriver, gecodriver, IEDriverServer. Я майже впевнений, що в мене правильний шлях. Перезавантажте комп’ютер, все працює


1

Найкращий спосіб точно:

Завантажте та розпакуйте Chromeedriver і поставте "chromedriver.exe" в C: \ Python27 \ Scripts, і тоді вам не потрібно вказувати шлях драйвера, просто

driver= webdriver.Chrome()

Вам не потрібно додавати шляхи чи що-небудь


0

У моєму випадку ця помилка зникає, коли я скопіював файл Chromeedriver у папку c: \ Windows. Це тому, що каталог Windows знаходиться на шляху, який скрипт python перевіряє наявність хромедрівера.


0

Якщо ви використовуєте віддалений перекладач, ви також повинні перевірити, чи визначено його виконаний PATH. У моєму випадку перехід з віддаленого перекладача Докера на місцевий перекладач вирішив проблему.


0

Я зіткнувся з тією ж проблемою, що і ваша. Я використовую PyCharm для написання програм, і я думаю, що проблема полягає в налаштуванні середовища в PyCharm, а не в ОС. Я вирішив проблему, перейшовши на конфігурацію сценарію, а потім вручну відредагувавши PATH в змінних середовища. Сподіваюся, ви знайдете це корисним!


інший варіант - перемістити хромовідвід безпосередньо в / usr / local / bin, тоді вам зовсім не
завадить


0

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


0

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

Для мене рішення було просто змінити папку в PATH, тому я просто перемістив її в папку бін Pycharm Community, яка також була в PATH. колишній:

  • C: \ Windows \ System32 \ chromedriver.exe -> Надав мені виключення
  • C: \ Файли програм \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> працював чудово

0

Виникла проблема з Mac Mojave під керуванням тестової системи Robot і Chrome 77. Це вирішило проблему. Kudos @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

Відкрити за ~/.bash_profileдопомогою редактора та додати:

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

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


0

У мене була ця проблема на Webdriver 3.8.0 (Chrome 73.0.3683.103 та ChromeDriver 73.0.3683.68). Проблема зникла після мене

pip install -U selenium

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


0

Перевірте шлях свого драйвера для хромування, він може звідти не отримати його. Просто скопіюйте вставте розташування драйверів у код.


-3

(для користувачів Mac) У мене є та сама проблема, але я вирішується цим простим способом: ви повинні помістити ваш Chromeedriver.exe в ту саму папку до виконуваного сценарію, а потім у pyhton написати цю інструкцію:

import os

os.environ ["PATH"] + = os.pathsep + r'X: / ваш / папка / скрипт / '


2
Рішення, яке ви пропонуєте, точно таке ж, як і у іншого користувача. Будь ласка, зверніть увагу на інші відповіді перед публікацією.
Микита Князєв

Хіба @walid_data не каже це, щоб вказати, що це може бути проблема лише для Windows?
BENC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.