selenium - исполняемый файл chromedriver должен находиться в PATH

Сообщение об ошибке:

Исполняемый файл chromedriver должен быть в PATH

Я пытался закодировать скрипт, используя selenium в pycharm, однако произошла ошибка выше. Я уже связал свой selenium с пихармом, как показано здесь (свежим и актуальным).

Я новичок в селене, не хромированный драйвер в папке "селен". Если это не так, где я могу найти его и добавить в путь?

Кстати, я попытался набрать "chromedriver" в cmd, однако он не был распознан как внутренняя или внешняя команда.

ошибка показана ниже:

Traceback (most recent call last):
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
PermissionError: [WinError 5] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/sebastian/PycharmProjects/web/bot.py", line 10, in <module>
    browser = webdriver.Chrome("C:/Users/sebastian/desktop/selenium-3.0.1")
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 62, in __init__
    self.service.start()
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'selenium-3.0.1' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.chrome.service.Service object at 0x01EDEAF0>>
Traceback (most recent call last):
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Users\sebastian\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'

Ответы

Ответ 1

Вы можете скачать ChromeDriver здесь: https://sites.google.com/a/chromium.org/chromedriver/downloads

Затем у вас есть несколько вариантов:

  • добавьте его на свой системный path
  • поместите его в тот же каталог, что и ваш скрипт python
  • укажите местоположение непосредственно через executable_path

    driver = webdriver.Chrome(executable_path='C:/path/to/chromedriver.exe')
    

Ответ 2

Другой способ - загрузить и распаковать хромированный рекордер и поместить 'chromedriver.exe' в C:\Python27\Scripts, а затем вам не нужно указывать путь для драйвера, просто

driver= webdriver.Chrome()

будет работать

Ответ 3

@mkheifetz Если вы используете Mac, файлы chromedriver не имеют расширения, поэтому это должно быть '/Users/Misha/chromedriver'. Но попробуйте присвоить его переменной, а затем проверьте, возвращает ли os.path.exists(chromedriver_path) значение True. - Максимилиан Питерс 22 июля в 15:19

Спасибо большое :) После удаления имени файла (.exe) все работает.

Ответ 4

Попробуйте это:

pip install webdriver-manager
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

Ответ 5

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

driver= webdriver.Chrome()

будет работать

Могу засвидетельствовать, что это также работает для Python3.7.

Ответ 6

После запуска приведенного выше кода для разрешения моего кода мне выдается ошибка "TypeError: makedirs() получил неожиданный аргумент ключевого слова"