Использование Selenium на Альт для роботизации процессов в образовании (Алексей Драгунов, OSEDUCONF-2026)
Материал из 0x1.tv
- Докладчик
- Алексей Драгунов
Сегодня образовательные организации в соответствии с федеральными и региональными требованиями, собственными потребностями работают одновременно со многими информационными системами, ресурсами и сервисами, которые плохо интегрированы между собой.
Рассматриваются подходы к использованию библиотеки Selenium, совместно с Webdriwer и Python для решения задач интеграции систем в образовании на примере работы с каналами образовательных организаций, создаваемых в национальном мессенджере MAX.
Содержание
Видео
Презентация
Thesis
Ключевые слова: образование, MAX, python, selenium, RPA, интеграция, Lowcode.
Введение
Сегодня образовательные организации в соответствии с федеральными и региональными требованиями, собственными потребностями работают одновременно со многими информационными системами, ресурсами и сервисами. Многие из них имеют web-интерфейс. В частности, школы обязаны вести госпаблики в сети ВК, сайты, с учётом регламентированных федеральных требований и каналы в национальном мессенджере МАХ. Кроме этого школы работают с РИС ГИА --- при проведении государственной итоговой аттестации, ФИС ОКО — для проведения всероссийских проверочных работ, региональной ГИС — для приёма в школу, учёта успеваемости учащихся (электронные журналы и дневники) и других задач. Кроме этого отдельный учёт требуется для реализации проекта «Билет в будущее» и многих других. К сожалению, задача интеграция этих систем решается не так быстро, как этого бы хотелось. Попробуем реализовать механизм, позволяющий самостоятельно обеспечить обмен данными, например для переноса информации из школьных каналов в МАХ на госпаблики и на сайты ОО без необходимости доработки самих этих информационных систем (сервисов).
Selenium — набор инструментов с открытым исходным кодом для автоматизации действий в веб-браузерах, в первую очередь для автотестирования веб-приложений, а также для парсинга и выполнения рутинных задач, эмулируя поведение реального пользователя, например, клики и заполнение форм. Он поддерживает различные языки программирования (Java, Python, PHP, C#, Ruby и др.) и позволяет проверять работу сайтов на разных браузерах и ОС.
Среди основных преимуществ Selenium --- открытый исходный код, свободная лицензия, кросс-браузерность и кросс-платформенность, поддержка множества языков программирования, гибкость и расширяемость.
Главным недостатком использования RPA и Selenium для интеграции систем является зависимость подхода от изменений систем с которыми настраивается интеграция. Это связано с тем, что взаимодействие систем строится на использовании их интерфейсов, которые разработчики могут изменять как угодно часто. Если это старые, заброшенные, но ещё используемые системы, у которых нет API и иных методов интеграции, то использование подобных технологий может быть оправданным, а вложения в разработку окупятся. Иногда Selenium и подобные продукты могут быть, к сожалению, единственными решениями для интеграции не только с унаследованными системами, но и с некоторыми федеральными системами, при отсутствии нормальных API и других методов интеграции.
Подготовка
Практическая реализация проекта была реализована на базе ALT Education 10.3 (FalcoRusticolus), python3 (3.9.18).
Первые сложности возникли при установке Selenium
<source lang="bash"> pip3 install selenium </source>
Установка Selenium в основном окружении Pyhthon не удалась из-за конфликта версий библиотеки typing-extensions. Для Selenium требуется более новая версия библиотеки, однако установленная версия библиотек не может быть удалена (из-за неустранимых конфликтов между зависимостями). К сожалению, достаточно продолжительное изучение документации не привело к положительным результатам. Ситуация конфликта библиотек в Python, к сожалению, является скорее правилом, чем исключением из него. Очень часто реализация проекта на этом языке требует особого сочетания версий библиотек и чем более сложным будет ваш проект, тем более «особым» будет это сочетание. Данная особенность сделала бы Python неприменимым если бы не виртуальные окружения (virtual enveroments), придуманные специально для решения этих проблем. В домашней папке была создана папка для проекта vk. Создадим в ней виртуальное окружение для нашего проекта с тем же именем, предварительно перейдя в папку проекта cd ~/vk
<source lang="bash"> python3 -m venv vk </source>
Активируем виртуальное окружение:
<source lang="bash"> source /home/<user>/vk/vk/bin/activate </source>
тут <user> --- имя пользователя, под которым работаем.
Установка Webdriver. Для работы библиотеки Selenium в Python или на любом другом языке, необходим Webdriver --- библиотека, обеспечивающая управление браузером.
Необходимо учесть два ключевых момента:
1. Драйвер должен обязательно соответствовать версии Вашего браузера. В моём случае в качестве браузера по-умолчанию на компьютере стояла достаточно старая версия Chromium.
2. Доступность Webdriver. Драйвер для платформы linux64 следует разместить в доступном месте. Я воспользовался личной папкой /home/user/webdriver, создав папку md /home/user/webdriver. Необходимо заменить user на своё имя пользователя и разархивировать в папку с драйвером содержимое архива chromedriver-linux64.zip, в нашем случае, в нём находится единственный исполняемый файл chromedriver и файл с лицензией. Файл chromedriver должен извлечься с правом eXecutable (исполняемый). Для того, чтобы для браузера по-умолчанию, всегда находился правильный драйвер, путь к драйверу должен присутствовать в переменной окружения PATH. Для того, чтобы это происходило автоматически, нужно изменить файл ~/.bashrc или ~/.bash_profile, добавив строку с путём к каталогу, содержащему WebDriver (например, export PATH=$PATH:/путь/к/драйверу).
Реализация решения на Python
Задача: написать код, обеспечивающий открытие сайтов с использованием ранее выполненной авторизации пользователя в мессенджере МАХ, без необходимости повторной авторизации. Созданный код должен открывать каналы всех школ региона (в адресе канала используется ИНН) и получать из каналов информацию о числе подписчиков. Перечень ИНН всех ОО, каналы которых открываются и используются для получения данных, хранятся в файле inn.txt. Результатом работы является файл output.txt, куда выводится число подписчиков каждого школьного канала в МАХ, полученное с использованием программы.
Основные трудности, с которыми пришлось столкнуться при решении задачи — корректное сохранение сессии браузера, изменение синтаксиса в новых версиях библиотеки Selenium, корректная идентификация элемента сайта в VK и др.
Подробное описание и исходный код программы доступны по адресу https://docs.integrics.ru/ru/openmaterials/selenium26
Заключение
Несмотря на рассмотренные выше недостатки подхода, рассмотренная технология позволяет решать широкий круг задач по разработке систем с минимизацией кодирования и повышением эффективности за счёт интеграции, в том числе --- с унаследованными системами или с системами, разработчики которых по тем или иным причинам не разработали механизмы интеграции для своих решений.
Задачи, в решении которых может помочь применение Selenium
- Исключить для образовательных организаций дублирование работ по информационному наполнению сайтов, госпабликов (в социальной сети VK), каналов с использованием национального мессенджера MAX
- Обеспечить сбор контента из школьных каналов (госпабликов) для подготовки недельных дайджестов о жизни системы образования в регионе (муниципалитете) и публикация информации на региональном портале. Для подготовки обзоров могут быть использованы, в том числе, большие языковые модели (ИИ)
- Обеспечение информационного взаимодействия с ПОС (платформой обратной связи) Минцифры России для автоматизации обработки обращений с применением РГИС и автоматизированным решением обращений на уровне образовательных организаций и обеспечением формирования ответов, в том числе, с использованием ИИ.
Очевидно, что интеграция с использованием открытых стандартов существенно эффективнее, чем эмуляция работы пользователей с интерфейсами, которые наименее стабильны, но не решение многих насущных проблем в течении ряда лет, делает применение таких технологий, как Selenium оправданным.
