Selenium с использованием Python - исполняемый файл Geckodriver должен находиться в PATH

Я новичок в программировании и начал с Python около двух месяцев назад, и сейчас перейду к тексту Sweigart Автоматизировать скучные вещи с помощью Python. Я использую IDLE и уже установил модуль Selenium и браузер Firefox.

Всякий раз, когда я пытался запустить функцию webdriver, я получаю следующее:

from selenium import webdriver
browser = webdriver.Firefox()

Исключение:

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
    self.service.start()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Я думаю, мне нужно указать путь для geckodriver, но я не знаю, как это сделать, как мне это сделать?


person tadm123    schedule 23.10.2016    source источник
comment
См. Мой ответ на аналогичный вопрос здесь   -  person Andrew    schedule 24.10.2016
comment
Я помещаю geckodriver.exe в каталог Python / Python35, чтобы он имел тот же путь, и у меня возникает еще больше проблем.   -  person tadm123    schedule 24.10.2016
comment
На Mac: brew install geckodriver   -  person Nostalg.io    schedule 15.11.2016
comment
Я обнаружил, что запуск его через браузер Chrome немного быстрее, чем в Firefox, для этого вам просто нужно загрузить chromedriver.   -  person tadm123    schedule 28.11.2016
comment
Примечание. Есть Testcafe, исходный код которого недавно был открыт. Для этого не требуются плагины для браузера, они встроены. Я хотел использовать Selenium, но это выглядит интересной альтернативой.   -  person Ehvince    schedule 09.12.2016
comment
Решение по следующей ссылке   -  person sottany    schedule 28.06.2017
comment
В Ubuntu выполните следующие действия: liquidweb .com / kb / how-to-install-selenium-tools-on-ubuntu-18-04.   -  person amdan    schedule 11.03.2021


Ответы (34)


selenium.common.exceptions.WebDriverException: Сообщение: исполняемый файл geckodriver должен находиться в PATH.

Прежде всего, вам нужно будет загрузить последнюю версию исполняемого файла geckodriver отсюда, чтобы запустить последнюю версию Firefox с использованием Selenium

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

  • В системах Unix вы можете сделать следующее, чтобы добавить его в путь поиска вашей системы, если вы используете оболочку, совместимую с Bash:

      export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
    
  • В Windows вам нужно будет обновить системную переменную Path, чтобы добавить полный путь к каталогу исполняемого geckodriver вручную или командная строка ** (не забудьте перезагрузить систему после добавление исполняемого geckodriver в системный PATH для вступления в силу) **. Принцип такой же, как и в Unix.

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

from selenium import webdriver

browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException: Сообщение: ожидаемое двоичное расположение браузера, но не удается найти двоичный файл в расположении по умолчанию, отсутствует возможность moz: firefoxOptions.binary и не установлен двоичный флаг в командной строке

В исключении четко указано, что вы установили Firefox в другое место, в то время как Selenium пытается найти Firefox и запустить его из местоположения по умолчанию, но не может его найти. Для запуска Firefox вам необходимо явно указать расположение установленного двоичного файла Firefox, как показано ниже: -

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)

https://github.com/mozilla/geckodriver/releases

Для Windows:

Загрузите файл с GitHub, извлеките его и вставьте в файл Python. У меня это сработало.

https://github.com/mozilla/geckodriver/releases

Для меня мой путь пути:

C:\Users\MYUSERNAME\AppData\Local\Programs\Python\Python39
person Saurabh Gaur    schedule 23.10.2016
comment
Спасибо, но я установил свой geckodriver.exe в каталог C:\Python\Python35\selenium, и я установил путь, как вы описали, но это дает мне ошибку ниже: - person tadm123; 24.10.2016
comment
Это означает, что проблема пути была решена, это ясно указывает на то, что вы не установили firefox в расположение по умолчанию, поэтому вам необходимо явно указать расположение установленного firefox для запуска - person Saurabh Gaur; 24.10.2016
comment
Спасибо @Saurabh Gaur, теперь он работает. Я вручную добавил путь Firefox к системным переменным, и все работает. На запуск уходит немного времени, но я предполагаю, что это нормально. Спасибо! - person tadm123; 24.10.2016
comment
У меня была точно такая же проблема, что и у стартера потока (исходная проблема). Однако простое добавление пути к .exe не сработало. .Exe должен был находиться в папке python35. - person Michael Johnson; 25.10.2016
comment
Я получил сообщение об ошибке WebDriverException: Сообщение: Не удалось запустить браузер: разрешение было отклонено сначала, когда я начал указывать двоичный путь firefox, но перезагрузка компьютера (Windows 10) разрешила проблему. - На всякий случай, если кто-то столкнется с той же проблемой, что и я. - person NoSuchElephantException; 03.11.2016
comment
на osx ставил /usr/local/bin - person Harry Moreno; 02.12.2016
comment
Что такое двоичный файл? Это означает исполняемый файл? - person User; 08.12.2016
comment
В дополнение к этому ответу я хотел бы подробнее рассказать о настройке PATH в среде unix. Вы можете установить его в коде, поскольку он вам не нужен для всей системы: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' Или просто сохраните двоичный файл geckodriver в каталоге, который уже находится на вашем пути: mv geckodriver /usr/local/bin - person dsalaj; 23.03.2017
comment
Откуда скачать geckodriver? Репозиторий github состоит всего из двух файлов ... - person Alex; 13.09.2017
comment
@Alex, вы можете загрузить последнюю версию geckodriver v018.0 отсюда - person Saurabh Gaur; 14.09.2017
comment
Как ни странно, это не будет работать из / usr / bin, даже если эта папка находится в PATH. Пришлось поместить его в свой домашний каталог. - person wordsforthewise; 19.07.2018
comment
Пользователь Windows: не забудьте перезагрузить после изменения пути. ИМО самая важная часть. Я боролся час, пока не нашел этот ответ: - / - person ascripter; 27.07.2019
comment
Вы можете получить geckodriver в ubuntu 20, используя команду ниже: sudo apt install firefox-geckodriver - person Overlord; 05.09.2020
comment
@ascripter Я добавил его в путь и перезапустил, но все еще получаю ту же ошибку, что и в вопросе OP. - person Have a nice day; 06.04.2021

Это решило проблему для меня.

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')
person Nesa    schedule 08.02.2017
comment
Если вы получили неправильное разрешение, попробуйте удалить [r '] из пути просто excecutable_path =' path \ to \ your'diretory ' - person Darius; 04.11.2017
comment
@adityarawat какая у вас операционная система? - person Nesa; 09.05.2018
comment
но теперь я получаю OSError вместо неправильных разрешений. Мне как-то удалось скопировать geckodriver в / usr / local / bin. но теперь эта новая ошибка убивает меня - person aditya rawat; 09.05.2018
comment
@adityarawat, вы можете скачать geckodriver самостоятельно отсюда: github.com/mozilla/geckodriver/releases extract его с помощью tar и сделать его исполняемым с помощью chmod + x, он не обязательно должен быть в / usr / local / bin, вам просто нужно указать свой путь к нему - person Nesa; 09.05.2018
comment
просто для ясности, я загрузил файл arm7hf.tar, также извлек его и добавил в путь с помощью команды export PATH=$PATH:geckodriver (он извлекается на рабочем столе). Но и это не помогло. Я все еще получаю OSError [errno 8] - person aditya rawat; 09.05.2018
comment
@adityarawat, а вы сделали его исполняемым? Если вы сделаете это с помощью моего метода, то вам не нужно экспортировать путь к нему - person Nesa; 09.05.2018
comment
Угадай, что. Теперь он работает на холостом ходу, но не на pycharm (это совершенно бесполезно). И даже если он запустил firefox, он не подтвердил заголовок, который я хочу. Но я думаю, это решило проблему. Спасибо @Nesa. но он по-прежнему отображает неправильные разрешения в pycharm, хотя я предоставил все разрешения. - person aditya rawat; 09.05.2018
comment
Выбрасывает selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities - person 0x48piraj; 05.06.2018
comment
Это работало на Cent OS 7. Мне нужно явно указать executable_path в качестве аргумента ключевого слова. Отсутствие аргумента ключевого слова вызывает ошибку. - person Kei Minagawa; 28.09.2018
comment
Я работаю в Windows с помощью Jupyter Lab. я нашел это лучшим решением. Для удобства я скопировал geckodriver.exe в свой проект. Теперь мне даже не нужно добавлять его в PATH или явно указывать путь к каталогу. - person DotPi; 30.11.2018
comment
Работает, но мне пришлось поместить .exe на локальный диск (не работал в сетевом месте) - person lui; 27.01.2019
comment
У меня сработало, я просто скачал geckodriver по ссылке и добавил к нему путь. Спасибо брат !!! - person Harsh Gupta; 16.04.2020
comment
Какая платформа? Windows? - person Peter Mortensen; 06.11.2020

Эти шаги решили эту проблему для меня в Ubuntu и Firefox 50.

  1. Загрузите geckodriver

  2. Скопируйте geckodriver в папку /usr/local/bin

Вам не нужно добавлять:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)
person Andrea Perdicchia    schedule 02.12.2016
comment
В вашем коде вы не можете добавить переменную возможностей - person Andrea Perdicchia; 12.01.2017
comment
Вы случайно не знаете, как установить каталог загрузки для Firefox? Я добавил следующий вопрос: Установить настройки Firefox. Любая помощь приветствуется. - person d84_n1nj4; 16.01.2017
comment
В Debian или Ubuntu вы должны использовать команду apt для установки Firefox. Для Windows я понятия не имею, извините - person Andrea Perdicchia; 16.01.2017
comment
Спасибо. После применения этого ответа я использовал это решение для решения следующей проблемы: stackoverflow.com/questions/43713445/ - person HackNone; 12.07.2017
comment
Спасибо, Pycharm не нашел geckodriver, хотя он был дома и в самой папке проекта, но после перемещения его в / usr / local / bin он отлично работал - person Ronald Das; 11.05.2018
comment
Вот что у меня сработало: liquidweb.com/kb/how-to-install-selenium-tools-on-ubuntu-18-04 - person amdan; 11.03.2021

Ответ @saurabh решает проблему, но не объясняет, почему Автоматизация скучных вещей с помощью Python не включает эти шаги.

Это вызвано тем, что книга основана на Selenium 2.x, а драйвер Firefox для этой серии не нуждается в драйвере Gecko. Интерфейс Gecko для управления браузером был недоступен во время разработки Selenium.

последняя версия в серии Selenium 2.x - 2.53.6 (см., Например, [эти ответы] [2], для облегчения просмотра версий).

На [странице версии 2.53.6] [3] Gecko вообще не упоминается. Но начиная с версии 3.0.2 в документации [явно указано] [4] вам необходимо установить драйвер Gecko.

Если после обновления (или установки в новой системе) ваше программное обеспечение, которое до этого работало нормально (или в вашей старой системе), больше не работает, и вы торопитесь, закрепите версию Selenium в своем virtualenv, выполнив

pip install selenium==2.53.6

но, конечно, долгосрочное решение для разработки - это установить новый virtualenv с последней версией селена, установить драйвер Gecko и проверить, все ли по-прежнему работает так, как ожидалось.

Но изменение основной версии может привести к другим изменениям API, которые не описаны в вашей книге, поэтому вы можете придерживаться более старого Selenium, пока не будете достаточно уверены, что сможете исправить любые несоответствия между Selenium 2 и Selenium 3 API самостоятельно.

[2]: https://stackoverflow.com/a/40746017/1307905) [3]: https://pypi.python.org/pypi/selenium/2.53.6 [4] : https://pypi.python.org/pypi/selenium#drivers

person Anthon    schedule 30.12.2016

В macOS с уже установленным Homebrew вы можете просто запустить команду терминала

$ brew install geckodriver

Поскольку homebrew уже расширил PATH, нет необходимости изменять какие-либо сценарии запуска.

person roskakori    schedule 03.09.2017
comment
@roskakori Я сделал это, и он успешно установился, но все равно получаю ту же ошибку - person JKC; 14.08.2019
comment
Это помогло мне, спасибо. Использование Firefox 72.0.2 и Selenium 3.141.0 - person Sam; 21.04.2020

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

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

pip install webdriver-manager

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

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
person Navarasu    schedule 06.11.2019
comment
Есть ли в Safari или даже Internet Explorer аналогичный диспетчер драйверов? - person Mischief_Monkey; 21.05.2020
comment
Или используя pip3? - person Peter Mortensen; 06.11.2020
comment
Это вроде работает, но я думаю, что geckodriver должен быть на пути. Временно, например: export PATH=$PATH:/home/embo/.wdm/drivers/geckodriver/linux64/v0.28.0 - person Peter Mortensen; 06.11.2020
comment
Потрясающие! Это намного проще! - person Tmfwang; 05.03.2021

Чтобы настроить geckodriver для Selenium Python:

Необходимо установить путь geckodriver с помощью FirefoxDriver, как показано ниже:

self.driver = webdriver.Firefox(executable_path = 'D:\Selenium_RiponAlWasim\geckodriver-v0.18.0-win64\geckodriver.exe')

Загрузите geckodriver для своей подходящей ОС (со страницы https://github.com/mozilla/geckodriver/releases) → Распакуйте его в папку по вашему выбору → Правильно укажите путь, как указано выше.

Я использую Python 3.6.2 и Selenium WebDriver 3.4.3 в Windows 10.

Другой способ настроить geckodriver:

i) Просто вставьте geckodriver.exe в / Python / Scripts / (в моем случае папка была: C:\Python36\Scripts)
ii) Теперь напишите простой код, как показано ниже:

self.driver = webdriver.Firefox()
person Ripon Al Wasim    schedule 21.07.2017

Если вы используете Anaconda, все, что вам нужно сделать, это активировать виртуальную среду, а затем установить geckodriver используя следующую команду:

    conda install -c conda-forge geckodriver
person Rodolfo Alvarez    schedule 26.06.2018
comment
Да, он устанавливает geckodriver, но ошибка pycharm остается прежней. - person WebComer; 08.01.2019

Ubuntu 18.04 + и новейшая версия geckodriver

Это также должно работать и для других разновидностей * nix.

export GV=v0.29.0
wget "https://github.com/mozilla/geckodriver/releases/download/$GV/geckodriver-$GV-linux64.tar.gz"
tar xvzf geckodriver-$GV-linux64.tar.gz
chmod +x geckodriver
sudo cp geckodriver /usr/local/bin/

Для Mac обновите до:

geckodriver-$GV-macos.tar.gz
person jmunsch    schedule 13.06.2019

Самый простой способ для Windows!

Загрузите последнюю версию geckodriver с здесь. Добавьте файл geckodriver.exe в каталог Python (или любой другой каталог, который уже находится в PATH). Это должно решить проблему (тестировалась в Windows 10).

person Jalles10    schedule 22.10.2017
comment
Windows Server 2019 - после добавления пути к geckodriver.exe в системе он не работал, но после копирования geckodiriver.exe на путь python он работает! Спасибо : ) - person Jakub Ujvvary; 26.10.2020

Шаги для Mac

Простое решение - загрузить GeckoDriver и добавить его в PATH вашей системы. Вы можете использовать любой из двух подходов:

Короткий метод

  1. Загрузите и разархивируйте Geckodriver.

  2. Укажите путь при запуске драйвера:

     driver = webdriver.Firefox(executable_path='/your/path/to/geckodriver')
    

Длинный метод

  1. Загрузите и разархивируйте Geckodriver.

  2. Откройте .bash_profile. Если вы еще не создали его, вы можете сделать это с помощью команды: touch ~/.bash_profile. Затем откройте его, используя: open ~/.bash_profile

  3. Учитывая, что файл GeckoDriver присутствует в папке «Загрузки», вы можете добавить следующие строки в файл .bash_profile:

     PATH="/Users/<your-name>/Downloads/geckodriver:$PATH"
     export PATH
    

Этим вы добавляете путь к GeckoDriver в системный PATH. Это сообщает системе, где находится GeckoDriver, при выполнении ваших сценариев Selenium.

  1. Сохраните .bash_profile и заставьте его выполнить. Значения загружаются немедленно, без перезагрузки. Для этого вы можете запустить следующую команду:

source ~/.bash_profile

  1. Вот и все. Готово готово! Теперь вы можете запустить скрипт Python.
person Umang Sardesai    schedule 08.02.2017
comment
Мне удалось загрузить geckodriver с помощью Homebrew: brew install geckodriver, а затем запустить Firefox через: driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver") - person P A N; 29.03.2017

Некоторые дополнительные комментарии / пояснения для будущих читателей этой ветки:

В качестве разрешения для Windows 7, Python 3.6 и Selenium 3.11 достаточно следующего:

примечание dsalaj для другого ответ для Unix применим и к Windows; возни с переменной среды PATH на уровне Windows и перезапуска системы Windows можно избежать.

(1) Загрузите geckodriver (как описано в этой ветке ранее) и поместите (разархивированный) geckdriver.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.Firefox();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

Примечания: (1) Код выше может занять около 10 секунд, чтобы открыть браузер Firefox для указанного URL. (2) Консоль Python покажет следующую ошибку, если нет сервера, уже работающего по указанному URL или обслуживающего страницу с заголовком, содержащим строку 'Django': selenium.common.exceptions.WebDriverException: Сообщение: достигнута страница ошибки: о : neterror? e = connectionFailure & u = http% 3A // localhost% 3A8000 / & c = UTF-8 & f = normal & d = Firefox% 20can% E2% 80% 9

person Snidhi Sofpro    schedule 16.04.2018

geckodriver по умолчанию не установлен.

$ geckodriver

Command 'geckodriver' not found, but it can be installed with:

sudo apt install firefox-geckodriver

$

Следующая команда не только устанавливает его, но и помещает в исполняемый файл PATH.

sudo apt install firefox-geckodriver

Проблема решается всего за один шаг. У меня была точно такая же ошибка, как и у вас, и она исчезла, как только я ее установил. Давай, попробуй.

$ which geckodriver
/usr/bin/geckodriver
$
$ geckodriver
1337    geckodriver    INFO    Listening on 127.0.0.1:4444
^C
person Community    schedule 03.09.2020
comment
Это сработало для меня. Также это устраняет боль при загрузке драйвера и установке его по правильному пути. - person S Andrew; 05.10.2020

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

https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

Firefox 50.1.0

Python 3.5.2

Селен 3.0.2

Windows 10

Я использую VirtualEnv (которым управляю с помощью PyCharm, и я предполагаю, что он использует Pip для установить все).

В следующем коде я могу использовать конкретный путь для geckodriver, используя параметр executable_path (я обнаружил это, просмотрев Lib \ site-packages \ selenium \ webdriver \ firefox \ webdriver.py). Примечание. У меня есть подозрение, что порядок аргументов параметров при вызове webdriver важен, поэтому в моем коде исполняемый_путь стоит последним (предпоследняя строка справа).

Вы также можете заметить, что я использую собственный профиль Firefox, чтобы обойти проблему sec_error_unknown_issuer, с которой вы столкнетесь, если сайт, который вы тестируете, имеет ненадежный сертификат. См. Как отключить предупреждение о ненадежном подключении Firefox с помощью Selenium?

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

В любом случае, вот код того, как я заставил geckodriver работать, не попадая на путь:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

#you probably don't need the next 3 lines they don't seem to work anyway
firefox_capabilities['handleAlerts'] = True
firefox_capabilities['acceptSslCerts'] = True
firefox_capabilities['acceptInsecureCerts'] = True

# In the next line I'm using a specific Firefox profile because
# I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver
# I create a Firefox profile where I had already made an exception for the site I'm testing
# see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager

ffProfilePath = 'D:\Work\PyTestFramework\FirefoxSeleniumProfile'
profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath)
geckoPath = 'D:\Work\PyTestFramework\geckodriver.exe'
browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath)
browser.get('http://stackoverflow.com')
person Roochiedoor    schedule 06.01.2017
comment
Я получил SyntaxError: (ошибка юникода) кодек unicodeescape не может декодировать байты ... И мне нужно изменить путь gecko на epath = r'C: \ Users \ step_ \ Documents \ mtg_buyer \ geckodrivers \ geckodriver.exe '. Может причина в том, что я использую китайскую Windows 10? - person Endle_Zhenbo; 28.06.2017

Рассмотрите возможность установки контейнерного Firefox:

docker pull selenium/standalone-firefox
docker run --rm -d -p 5555:4444 --shm-size=2g selenium/standalone-firefox

Подключитесь с помощью webdriver.Remote:

driver = webdriver.Remote('http://localhost:5555/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://toolbox.googleapps.com/apps/browserinfo/')
driver.save_screenshot('info.png')
person Max Malysh    schedule 31.01.2020

Очень грустно, что ни одна из книг, опубликованных на Selenium / Python, и большинство комментариев по этой проблеме через Google не объясняют четко логику пути, чтобы настроить это на Mac (все это Windows !!!!). Все видео на YouTube начинаются сразу после настройки пути (на мой взгляд, дешевый выход!). Итак, для вас, замечательных пользователей Mac, используйте следующее для редактирования файлов пути Bash:

touch ~/.bash_profile; open ~/.bash_profile*

Затем добавьте путь примерно так ....

# Setting PATH for geckodriver
PATH=“/usr/bin/geckodriver:${PATH}”
export PATH

# Setting PATH for Selenium Firefox
PATH=“~/Users/yourNamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/firefox/:${PATH}”
export PATH

# Setting PATH for executable on Firefox driver
PATH=“/Users/yournamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/common/service.py:${PATH}”
export PATH*

Это сработало для меня. Меня беспокоит, когда сообщество Selenium Windows начнет играть в настоящую игру и включит нас, пользователей Mac, в свое высокомерное членство в клубе.

person JustASteve    schedule 19.12.2016

Я использую Windows 10, и у меня это сработало:

  1. Загрузите geckodriver с здесь. Загрузите версию, подходящую для используемого вами компьютера.
  2. Разархивируйте только что загруженный файл и вырежьте / скопируйте файл .exe, который он содержит.
  3. Перейдите к C: {ваша корневая папка python}. Мой был C: \ Python27. Вставьте файл geckodriver.exe в эту папку.
  4. Перезагрузите среду разработки.
  5. Попробуйте запустить код еще раз. Теперь он должен работать.
person Lone Ronin    schedule 14.07.2017

from webdriverdownloader import GeckoDriverDownloader # vs ChromeDriverDownloader vs OperaChromiumDriverDownloader
gdd = GeckoDriverDownloader()
gdd.download_and_install()
#gdd.download_and_install("v0.19.0")

Это даст вам путь к вашему gekodriver.exe в Windows.

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'C:\\Users\\username\\\bin\\geckodriver.exe')
driver.get('https://www.amazon.com/')
person InLaw    schedule 09.10.2019

Вы можете решить эту проблему с помощью простой команды, если вы используете Linux

  1. Сначала загрузите (https://github.com/mozilla/geckodriver/releases) и извлеките ZIP-файл

  2. Откройте извлеченную папку

  3. Откройте терминал из папки (где находится файл geckodriver после извлечения)

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

  4. Теперь запустите эту простую команду на своем терминале, чтобы скопировать geckodriver в нужную папку:

     sudo cp geckodriver /usr/local/bin
    
person Tanmoy Bhowmick    schedule 22.07.2020

Selenium отвечает на этот вопрос в своем файле DESCRIPTION.rst:

Драйверы
=======

Selenium требует наличия драйвера для взаимодействия с выбранным браузером. Например, Firefox требует geckodriver <https://github.com/mozilla/geckodriver/releases>_, который необходимо установить перед запуском приведенных ниже примеров. Убедитесь, что он у вас в PATH, e. g., поместите его в /usr/bin или /usr/local/bin.

Несоблюдение этого шага приведет к ошибке `selenium.common.exceptions.WebDriverException: Сообщение: исполняемый файл 'geckodriver' должен находиться в PATH.

По сути, просто загрузите geckodriver, распакуйте его и переместите исполняемый файл в папку / usr / bin.

person Peter Graham    schedule 19.04.2017
comment
Эта цитата содержит указания, которые работали на linux mint 18. - person Elliot Robert; 04.06.2017

Для пользователей Windows

Используйте исходный код, как он:

from selenium import webdriver
browser = webdriver.Firefox()
driver.get("https://www.google.com")

Затем загрузите драйвер с: mozilla / geckodriver

Поместите его в фиксированный путь (навсегда) ... В качестве примера я поместил его в:

C: \ Python35

Затем перейдите к переменным среды системы. В сетке системных переменных найдите переменную Path и добавьте:

; C: \ Python35 \ geckodriver

geckodriver, не geckodriver.exe.

person user_007    schedule 19.03.2019
comment
geckodriver, а не geckodriver.exe. - person Saurabh Chandra Patel; 15.06.2019

Если вы используете виртуальную среду и Windows 10 (возможно, это то же самое для других систем), вам просто нужно поместить geckodriver.exe в следующую папку в каталоге виртуальной среды:

... \ my_virtual_env_directory \ Scripts \ geckodriver.exe

person apet    schedule 06.12.2019
comment
Точно ... установка geckodriver в каталог среды lib (Unix) или Scripts (Windows) помогает решить эту проблему при использовании виртуальной среды. - person Olfredos6; 19.06.2020

На Raspberry Pi мне пришлось создать из драйвера ARM и установить geckodriver и путь для входа в систему:

sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py

def __init__(self, firefox_profile=None, firefox_binary=None,
             timeout=30, capabilities=None, proxy=None,
             executable_path="/PATH/gecko/geckodriver",                     
firefox_options=None,
             log_path="/PATH/geckodriver.log"):
person Nathan Gisvold    schedule 27.02.2017
comment
Что создать? От драйвера ARM? Из драйвера ARM (их больше одного)? Что такое драйвер ARM? Вы можете уточнить? - person Peter Mortensen; 06.11.2020

Мне достаточно было просто установить geckodriver в той же среде:

$ brew install geckodriver

И код не изменился:

from selenium import webdriver
browser = webdriver.Firefox()
person Olesya M    schedule 21.04.2020

В macOS v10.12.1 (Sierra) и Python 2.7.10 это работает для меня:

def download(url):
    firefox_capabilities = DesiredCapabilities.FIREFOX
    firefox_capabilities['marionette'] = True
    browser = webdriver.Firefox(capabilities=firefox_capabilities,
                                executable_path=r'/Users/Do01/Documents/crawler-env/geckodriver')
    browser.get(url)
    return browser.page_source
person hzandi    schedule 15.02.2017

Посетите Драйвер Gecko и получите URL-адрес драйвера Gecko из Загрузки раздел.

Клонируйте этот репозиторий: https://github.com/jackton1/script_install.git

cd script_install

Запустить

./installer --gecko-driver https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.25.0-linux64.tar.gz
person jackotonye    schedule 17.08.2017

Я использую Windows 10 и Anaconda 2. Я попытался установить переменную системного пути, но не вышло. Затем я просто добавил файл geckodriver.exe в папку Anaconda 2 / Scripts, и теперь все отлично работает.

Для меня путь был:

C:\Users\Bhavya\Anaconda2\Scripts
person Bhavya Ghai    schedule 13.12.2017

Если вы хотите добавить пути к драйверам в Windows 10:

  1. Щелкните правой кнопкой мыши значок «Этот компьютер» и выберите «Свойства».

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

  2. Нажмите «Расширенные настройки системы».

  3. Щелкните «Переменные среды» внизу экрана.

  4. В разделе «Пользовательские переменные» выделите «Путь» и нажмите «Изменить».

  5. Добавьте пути к своим переменным, нажав «Создать», введя путь для добавляемого драйвера и нажав Enter.

  6. После того, как вы введете путь, нажмите «ОК».

  7. Продолжайте нажимать «ОК», пока не закроете все экраны.

person Russ Thomas    schedule 28.04.2019

  1. Убедитесь, что у вас правильная версия драйвера (geckodriver), x86 или 64.
  2. Убедитесь, что вы проверяете правильную среду. Например, задание выполняется в контейнере Docker, а среда проверяется в ОС хоста.
person Wen    schedule 19.11.2019

Чтобы добавить свои два цента, также можно сделать echo PATH (Linux) и просто переместить geckodriver в папку по своему вкусу. Если целью является системная папка (а не виртуальная среда), драйвер становится глобально доступным.

person Aramakus    schedule 22.05.2020

В Windows 10 у меня работает загрузка geckodriver.exe. Мне просто нужно было обновить Firefox.

Ниже кода, который я использовал:

from selenium import webdriver
driver = webdriver.Firefox(
    executable_path=r'C:\Users\Usuario\Desktop\Automate the boring stuff with python exercises\Web Scraping\geckodriver.exe')
driver.get('http://inventwithpython.com')
person Kimochi Neina    schedule 10.08.2020

Это сообщение об ошибке ...

FileNotFoundError: [WinError 2] The system cannot find the file specified

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

selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

... что означает, что ваша программа не смогла найти GeckoDriver в процессе инициации / создания нового контекста просмотра, т. Е. Сеанса браузера Firefox.


Вы можете загрузить последнюю версию GeckoDriver из mozilla / geckodriver, распаковать / распаковать и сохранить GeckoDriver бинарный / исполняемый файл в любом месте вашей системы, передающий абсолютный путь к GeckoDriver с помощью клавиши executable_path следующим образом:

from selenium import webdriver

driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
driver.get('http://google.com/')

Если firefox не установлен в местоположении по умолчанию ( т.е. установлен в произвольном месте) дополнительно необходимо передать абсолютный путь к двоичному файлу firefox через атрибут binary_location следующим образом:

# An Windows example
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\geckodriver.exe')
driver.get('http://google.com/')
person DebanjanB    schedule 10.01.2021

Этот ответ полностью скопирован с: Corey Goldberg @ https://askubuntu.com/questions/870530/how-to-install-geckodriver-in-ubuntu.

ДАЙТЕ ЕМУ БОЛЬШОЕ ГОЛОСОВАНИЕ

Ручные шаги по установке geckodriver в Ubuntu:

посетите https://github.com/mozilla/geckodriver/releases.

скачать последнюю версию geckodriver-vX.XX.X-linux64.tar.gz

разархивируйте архив (tar -xvzf geckodriver-vX.XX.X-linux64.tar.gz)

предоставить исполняемые права для geckodriver (chmod + x geckodriver)

переместите двоичный файл geckodriver в / usr / local / bin или в любое место в PATH вашей системы.

Скрипт для установки geckodriver в Ubuntu:

#!/bin/bash

INSTALL_DIR="/usr/local/bin"

json=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest)
url=$(echo "$json" | jq -r '.assets[].browser_download_url | select(contains("linux64"))')
curl -s -L "$url" | tar -xz
chmod +x geckodriver
sudo mv geckodriver "$INSTALL_DIR"
echo "installed geckodriver binary in $INSTALL_DIR"
person victorkolis    schedule 24.06.2021

Я решил эту проблему после добавления путей к переменным окружения ».

from selenium import webdriver

browser = webdriver.Firefox(executable_path='C:\ProgramData\Anaconda3\geckodriver.exe')

url = "https://github.com"

browser.close()
person Derya Cortuk    schedule 01.07.2021
comment
Это уже предлагалось в нескольких ответах с более подробной информацией. Не думаю, что ваш ответ принесет что-то новое или более полезное, чем уже существующие. - person Dada; 02.07.2021