NewTechAudit
155

Selenium или автоматизация работы браузера

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

В закладки

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() можно нажать на объект веб-страницы.

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

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

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

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

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

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

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

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

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

Лайфхаки IT, проверенные AI-решения для стандартных задач
{ "author_name": "NewTechAudit", "author_type": "editor", "tags": [], "comments": 2, "likes": 0, "favorites": 0, "is_advertisement": false, "subsite_label": "newtechaudit", "id": 121501, "is_wide": false, "is_ugc": false, "date": "Mon, 20 Apr 2020 07:35:09 +0300", "is_special": false }
IPQuorum
Развитие технологических стартапов в России: барьеры и возможности
Внедрение решений Индустрии 4.0 в крупных промышленных предприятиях тормозят не только кризис и условия пандемии…
Объявление на vc.ru
0
2 комментария
Популярные
По порядку
0

А работает ли это все в терминальной  сессии, например ... по ночам.

Просто делали похожие вещи на c# библиотеках - в результате были проблемы с теневым запуском.
Получилось, что почти под каждый проект нужна виртуалка...

Ответить
0

Puppeteer,  headless браузер, работает.

Ответить

Прямой эфир