Время прочтения: 3 мин.

Selenium WebDriver – библиотека языка Python для управления работой браузера. По сути, такой веб-драйвер создает бота для автоматизации работы в браузере.

Одно из неоспоримых преимуществ Selenium WebDriver – это возможность выполнения действий на странице с «ожиданием». Веб-драйвер позволяет «ожидать», как бы ожидал человек, пока не появится необходимый элемент.

Но есть и минусы:

  • Работа возможно только с первой вкладкой браузера;
  • Иногда поведение в разных браузерах разнится;
  • Драйвер может «упасть» прямо посреди работы;
  • Бывают сложности с поиском элементов (XPath не всегда работает, но помогает замена поиска по ID);
  • Необходимо четко продумать алгоритм действий.

Связка Python-Selenium имеет удобный API для доступа ко многим браузерам.

Допустим, что библиотека уже установлена (иначе нужно запустить в CMD команду «pip install selenium»). Для работы будем использовать программный интерфейс Anaconda 3, а именно Jupiter Notebook.

Практика применения

В рамках работы по проекту нам нужно было получить для обработки приблизительно 10 тыс. документов формата .docx. Выгрузка одного объекта занимала от 30 до 40 секунд или 5-6 действий.

Автоматизация выгрузки была выполнена с помощью следующих действий:

  1. Получение объектов с веб-страниц

Для поиска объектов используются локаторы (строки, которые идентифицируют элемент страницы).

Примеры:

  1. by_id – осуществляется поиск по атрибуту id;
  2. by_xpath – поиск элемента по XPath выражению;
  3. by_cssSelector – поиск, основанный на описаниях таблиц стилей (CSS)

После поиска объектов, с ними можно выполнять различные действия. Например с помощью метода click() можно нажать на объект веб-страницы.

  1. Работа с выпадающими списками

Метод используется для работы с выпадающими списками.

Локатор by_id ищет элемент, необходимый для выбора. Далее выбирает строку со значением `EQUAL`.

  1. Имитация работы клавиатуры

Ниже представлен пример имитации нажатия клавиши на клавиатуре. Создаем экземпляр класса ActionChains, в который передаем browser. Далее вызываем метод SendKeys, в котором указываем действие, в данном случае – нажатие на Enter.

Action.perform() – командует выполнение.

Модуль time.sleep() дает нам то необходимое ожидание, которое нужно нам для получения объектов страницы в полном объеме.

И в заключение:

Установка драйвера для каждого браузера имеет свои особенности. Ознакомиться с информацией и узнать все возможности можно на официальном сайте ПО – selenium-python.com. Там же можно найти инструкции по установке и настройке библиотеки для различных ОС.