Как установить geckodriver linux

Обновлено: 07.07.2024

Я новичок в программировании и начал с Python около 2 месяцев назад, и я перейду к Sweigart's Automate the Boring Stuff с текстом Python . Я использую IDLE и уже установил модуль селена и браузер Firefox. Всякий раз, когда я пытался запустить функцию webdriver, я получаю это:

Я думаю, что мне нужно установить путь, geckodriver но не уверен, как, так что кто-нибудь может сказать мне, как мне это сделать?

Я помещаю geckodriver.exe в каталог Python / Python35, чтобы он имел тот же путь, и я получаю еще больше проблем. Я обнаружил, что запускать его через браузер Chrome немного быстрее, чем в Firefox, вам просто нужно скачать его chromedriver для этого. Примечание: есть Testcafe, который недавно был открыт. Он не требует никаких плагинов для браузера, они встроены. Я хотел использовать Selenium, но это выглядит как интересная альтернатива.

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

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

В Windows вам потребуется обновить системную переменную Path, чтобы вручную добавить полный путь к каталогу к исполняемому гекодрайверу или в командной строке (не забудьте перезапустить вашу систему после добавления исполняемого гекодривера в системный PATH, чтобы изменения вступили в силу) . Принцип такой же, как на Unix.

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

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

Спасибо, но я установил my geckodriver.exe в C:\Python\Python35\selenium каталоге, и я установил путь, как вы описали, но он дает мне ошибку ниже: Спасибо @Saurabh Gaur, это работает сейчас. Я добавил путь Firefox к системным переменным вручную, и все это работает. Требуется немного времени для запуска, но я предполагаю, что это нормально. Спасибо! Что такое бинарный файл? Это значит исполняемый файл? В дополнение к этому ответу я хотел бы подробнее остановиться на настройке PATH среды unix. Вы можете установить его в коде, поскольку он не нужен для всей системы: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' или просто сохраните двоичный файл geckodriver в каталоге, который уже находится на вашем пути: mv geckodriver /usr/local/bin

Это решило это для меня.

Если вы получили неправильное разрешение, попробуйте удалить [r '] из пути, просто "excecutable_path =' path \ to \ your'diretory '" @adityarawat в какой операционной системе вы работаете? но теперь я получаю OSError вместо неправильных разрешений. Мне как-то удалось скопировать geckodriver в / usr / local / bin. но теперь эта новая ошибка убивает меня просто чтобы быть понятным, я скачал файл arm7hf.tar и извлек его, а также добавил его в путь с помощью команды export PATH=$PATH:geckodriver (он извлекается в Desktop). Но это тоже не помогло. Я все еще получаю OSError [errno 8]

это шаги решены для меня на Ubuntu Firefox 50.

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

Вам НЕ нужно добавлять

В вашем коде нельзя добавить переменную возможности Вы случайно не знаете, как установить каталог для загрузки Firefox? Я добавил следующий вопрос Установить настройки Firefox . Любая помощь приветствуется. В Debian или Ubuntu вы должны использовать команду apt для установки Firefox. Для Windows я понятия не имею, извините Спасибо, Pycharm не нашел geckodriver, хотя он был дома и в самой папке проекта, но после перемещения его в / usr / local / bin он работал отлично

Ответ @saurabh решает проблему, но не объясняет, почему Automation the Boring Stuff с Python не включает эти шаги.

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

Последняя версия в серии 2.x селеном является 2.53.6 (см , например , эти ответы , для облегчения зрения версий).

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


Firefox до 46 версии поставляется с поддержкой WebDriver. Geckodriver требуется для Firefox выше 47+ версии. Нужно установить geckodriver отдельно от браузера.

Зайдите на github страницу с релизами чтобы выбрать нужный вам файл для скачивания в зависимости от вашей операционной системы и версии браузера Firefox.

На текущий момент, актуальная версия geckodriver является v0.26.0.

Установка geckodriver под Ubuntu, Windows и Mac

Ниже мы приводим примеры более "правильной" установки драйвера, но есть и более быстрый способ. Примените данный метод в двух случаях.

  1. Вам нужны разные версии geckodriver.
  2. У вас не получилось ничего из того, что мы предлагаем ниже под каждую операционную систему.

Инструкция установки

Если у вас Linux дистрибутив или Mac, вам нужно дать файлу geckodriver нужные права на выполнения. Открываем терминал и вводим команды одна за другой.

Теперь, когда вы будете запускать код в Python, вы должны указать Selenium на этот файл.

driver = webdriver . Firefox ( '/путь/до/драйвера/geckodriver' )

Для Windows

Минусы такого подхода

  1. Нужно помнить где у вас лежит geckodriver;
  2. Нужно не забывать указывать в конструктор класса webdriver.Firefox путь к драйверу.

Установка geckodriver в Ubuntu, Debian и ArchLinux

Выбираем (в зависимости от архитектуры процессора x32 или x64) нужный tar архив. В моем случае будет файл geckodriver-v0.26.0-linux64.tar.gz у меня Ubuntu 18.04.3 LTS.

Вытаскиваем файл из архива.

Даем нужные права драйверу.

Отправляем драйвер в папку где его будет искать Selenium.

Установка geckodriver в Mac OS

Пожалуй, самая простая установка в Mac. Выполняем в терминале:

Проблема такого подхода в том, что может быть старая версия. Для новой версии смотрите на страницу github с релизами и скачиваем архив geckodriver-v0.26.0-macos.tar.gz.

Заходим через терминал в папку где будет лежать архив и сам драйвер.

Даем драйверу права на выполнения.

/.bashrc" с помощью VIM или NANO.

Добавляем в конец файла следующие строки. ВНИМАНИЕ! Заменяем "/your/path/" указывая реальный путь к geckodriver файлу.

Возможно вы не поймете как выйти из VIM. Такое бывает.

  1. Нажимаем клавишу ESC
  2. Вводим символы :wq
  3. Enter

Теперь у вас будет последняя версия geckodriver на вашем новеньком маке.

Установка geckodriver в Windows

Windows пользователи возможно не слышали о таким виде архивов как tar.gz это нормально. Скачиваем и устанавливаем программу 7-Zip.


Скрипт теста ниже откроет веб-сайт в новом окне Firefox.

Web Scraping с Selenium и Python

Представьте, какие возможности откроются перед вами, если вы автоматизируете всю нудную деятельность в интернете, такую как ежедневная проверка первых результатов в Google по ключевым запросам, или загрузка кучи разных файлов с разных сайтов. В данном разделе мы научимся пользоваться Selenium вместе с Python. Selenium – это инструмент для веб скрейпинга, имитирующий деятельность пользователя в интернете. К примеру, вы можете использовать Selenium для автоматических запросов в Google и чтения результатов, или заходить в ваши аккаунты в социальных сетях, имитировать пользователя для теста ваших веб приложений. А также многое другое, что вам нужно постоянно делать в интернете. Возможности безграничны!

Важно : Каждый код в этом разделе был протестирован на Python 2.7 и Python 3.4.

Установка и использование Selenium

Selenium – это пакет Python который может быть установлен при помощи pip. Рекомендую установить его в виртуальной среде (используя virtualenv и virtualenvwrapper).

Чтобы установить Selenium, вам нужно ввести следующее:

В этом разделе мы инициализируем драйвер Firefox, вы можете установить его, скачав исходники geckodriver. Если вы хотите работать в Chrome или IE, вы найдете всю нужную информацию у них на github.

Установка geckodriver драйвер для Firefox

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

Первым делом скачиваем исходники драйвера geckodriver в моем случае это "geckodriver-v0.15.0-linux64.tar.gz" у меня Ubuntu.

Более подробно про установку можно прочитать на английском сайте документации. Там и список всех доступных драйверов под разные браузеры.

Начнем работу!

После установки Selenium и Firefox(geckodriver), создайте файл Python под названием selenium_script.py. Теперь приступаем к инициализации браузера при помощи Selenium:

Таким образом, код инициализировал браузер Firefox, и закрывает его спустя 5 секунд.

Что если мы перейдем в Google и поищем что-нибудь?

Web Scraping в Google при помощи Selenium

Давайте создадим скрипт, который загружает главную страницу Google, и создает запрос "Selenium":

Что есть в данном коде:

1. Функция init_driver инициализирует экземпляр драйвера;

- Создает экземпляр драйвера;

- Добавляет функцию WebDriverWait в качестве атрибута драйвера, так что доступ к нему станет намного проще. Эта функция используется для того, чтобы дать драйверу подождать 5 секунд, перед следующим действием;

2. Функция lookup берет два аргумента: драйвер и запрос (строка);

- Это открывает поисковую страницу Google;

- Затем ждет, пока будет найден элемент окна запроса, а также кнопку для нажатия. Обратите внимание на то, что мы используем функцию WebDriverWait именно для того, чтобы дождаться появления этих элементов;

- Оба элементы были обнаружены по наименованию. Другими вариантами их поиска были бы ID, XPATH, TAG_NAME, CLASS_NAME, CSS_SELECTOR.

- Далее, запрос отправляется в элемент окна запроса, после чего кнопка поиска нажимается;

- Если окно запроса или кнопка небыли найдены, в пределах наших пяти секунд, возникает TimeoutException ;

3. Следующий оператор является условным выражением, которое истинно только тогда, когда скрипт запускается напрямую. Это предотвращает запуск следующих операторов при импорте этого файла;

- Далее драйвер инициализируется и запускается функция lookup, которая будет искать в Google слово "Selenium";

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

И наконец, запустите свой код с:

Сработало? Если у вас появилась ошибка ElementNotVisibleException , читайте далее.

Как выявить ElementNotVisibleException

Недавно был изменен поиск Google, поэтому вначале Google показывает эту страницу:

Web Scraping с Selenium и Python

И после того, как вы начали вводить свой запрос, кнопка запроса смещается в верхнюю часть окна:

Web Scraping с Selenium и Python

Что ж, на самом деле она не двигается. Старая кнопка стала невидимой, а новая все еще видна (по этой причине и возникает ошибка, когда вы нажимаете на старую кнопку: она невидима!). Мы можем обновить функцию lookup в нашем коде, чтобы выявить ошибку:

Элемент button.click(), который и вызывал ошибку, находится внутри оператора try. Если ошибка возникла, мы взглянем на следующую кнопку, при помощи visibility_of_element_located, чтобы убедиться в том, что нужный нам элемент видим, после чего нажимаем на кнопку. Если в какой-либо момент, какой-либо элемент не будет найден в течение 5 секунд, ошибка TimeoutException возникнет и будет выявлена двумя последними строками кода. Обратите внимание на то, что название кнопки “btn K ” , а название новой кнопки - “btn G ”.

Финальный вид кода

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

Список методов в Selenium

Подводя итоги, я создал таблицу с основными методами, которые нам потребуются:

Внимание : это не файл Python, не пытайтесь запустить или импортировать его! Спасибо за внимание, надеюсь, эта статья вам очень помогла.

Selenium WebDriver — это инструмент для автоматизации действий веб-браузера.

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

Сам по себе Selenium Webdriver в отличие, например, от Selenium IDE ничего для тестирования не содержит, поэтому используется в связке с библиотеками для тестирования, которые есть в большинстве современных языков программирования.

В Python это unittest, nose, pytest и другие. В Java это JUnit.

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

В этой статье вы узнаете как пользоваться Selenium без привязки к какому-то языку программирования.

О написании тестов на Python с использованием Selenium читайте в статье Selenium + Python . Если вас интересует Java рекомендую статью Selenium + Java

Подключить драйвер браузера

Перейдите на selenium.dev и скачайте драйвер для нужного браузера.

Скачайте архив с драйвером. Для Windows x64 выберите .zip файл

Распакуйте архив. Я распаковал в папку C:\webdrivers

Добавьте путь до этой папку в системную переменную PATH .

В поиске наберите env

В разделе System Variables нажмите New

Создайте новую переменную с именем WEBDRIVER_PATH в поле значение укажите путь до папки в которой у вас лежить geckodriver.exe

Выберите переменную Path и нажмите Edit

Нажмите New и введите %WEBDRIVER_PATH%

Подключить драйвер браузера в Linux

Сперва нужно скачать WebDriver той же версии что и ваш Chrome.

Аналогично и для Firefox

Затем нужно добавить путь до WebDriver в системную переменную PATH

Проверить версию браузера

Проверить версию google-chrome можно выполнив

Google Chrome 89.0.4389.114

Версию браузера можно посмотреть в графическом интерфейсе перейдя в Settings → About Chrome

Версия Google Chrome изображение с сайта www.andreyolegovich.ru

Обновить google-chrome до последней стабильной версии в линукс

sudo apt-get update
sudo apt-get --only-upgrade install google-chrome-stable

Google Chrome 90.0.4430.93

Посетите selenium.dev и скачайте chromedriver_linux64.zip для Chrome или geckodriver-v0.28.0-linux64.tar.gz для Firefox

Предположим, что они теперь в папке Downloads

-rw-rw-r-- 1 andrei andrei 5564194 Nov 20 10:02 chromedriver_linux64.zip
-rw-rw-r-- 1 andrei andrei 2650003 Nov 20 10:03 geckodriver-v0.28.0-linux64.tar.gz

-rw-rw-r-- 1 andrei andrei 5564194 Nov 20 10:05 chromedriver_linux64.zip
-rw-rw-r-- 1 andrei andrei 2650003 Nov 20 10:05 geckodriver-v0.28.0-linux64.tar.gz

total 27M drwxr-xr-x 2 root root 4.0K Nov 20 10:46 ./ drwxr-xr-x 3 root root 4.0K Nov 20 10:07 ../ -rwxr-xr-x 1 root root 11M Oct 15 23:34 chromedriver* -rw-r--r-- 1 root root 5.4M Nov 20 10:19 chromedriver_linux64.zip -rwxr-xr-x 1 sshit sshit 7.6M Nov 3 18:13 geckodriver* -rw-r--r-- 1 root root 2.6M Nov 20 10:19 geckodriver-v0.28.0-linux64.tar.gz

После успешной распаковки можно убедиться в наличии двух исполняемых файлов chromedriver и geckodriver

Для этого откройте файл .bashrc и добавьте туда следующий код

PATH="/opt/WebDriver/bin:$" export PATH

Как раскрыть Selenium на весь экран

Первый способ - открыть в kiosk режиме

Второй способ - указать драйверу ширину равную ширине Вашего экрана

Действия

clear, click, findElement, findElements, getAttribute, getCssValue, sendKeys, submit, isDisplayed, isEnabled, getLocation, isSelected, getSize, getTagName, getText,

Определить подходящий селектор

Ошибки

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: element not interactable

Обычно появляется если вы пытаетесь выполнить sendKeys на элемент, который это не поддерживает.

Читайте также: