Всем привет!
Хотел бы рассказать про проект-альтернативу selenium grid’у на python’e. Под капотом используется ansible для оркестрации нод и selenium webdriver для управления браузером (не путать с проектом GitHub - SeleniumHQ/ansible-selenium: Module for managing a grid / nodes using Ansible).
Проект очень молодой и пока развивается одним человеком, но возможно адептам python’a будет интересно подключиться
Суть проекта:
-
ansible используется для настройки нод (видео запись, виртуальный буфер, установка пакетов и т.п.), в том числе запускает и останавливает webdriver, к которому можно подключаться удаленно. (Технически это должно работать также как и на localhost’e, если только разработчики webdriver’a специально не ограничили удаленные подключения. Н-р в chromedriver нужно выставлять специальный флаг
--whitelisted-ips=""
.) - webdriver используется напрямую через удаленное подключение, для этого нужно переопределить классы браузеров из текущего пакета selenium’a.
Исходники GitHub - schipiga/dilium: Distrubited selenium
Документация http://dilium.readthedocs.io/
Зачем это нужно
- Это весело и интересно. Проект развивается в свободное время. Есть повод углубиться в код ansible, tornado, selenium и порешать задачи удаленного менеджмента и оркестрации машин.
- Selenium grid не позволяет менеджить ноду. Он нужен, чтобы предоставлять доступ к webdriver API. И дополнительные возможности по записи видео, запуску виртуального буфера и прочее, требуют дополнительного прокси, который должен быть реализован на стороне ноды. Ansible в свою очередь вообще не требует дополнительных настроек ноды, лишь доступ по ssh (и установленный python, судя по тому как работают ansible modules). При этом ansible специально заточен под оркестрацию нод.
- Selenium grid написан на Java. И чтобы его поддерживать и расширять, нужно изучать Java. При этом кажется, что selenium grid на стороне клиента в целом и не нужен, т.к. webdriver слушает запросы по сети и к нему можно обращаться удаленно.
Какие актуальные задачи в проекте
- Подключение браузеров на различных операционках. Сейчас пока проверена работа на одной ноде ubuntu-14.04 с google-chrome.
- Разобраться с устройством ansible module, чтобы гарантировать ошибку в случае фейла запуска shell-команды как daemon’a на ноде.
- Расширение API сервера по node-менеджементу (обновление конфига с нодами, улучшение кода распредения хостов, установка браузеров и вебдрайверов на ноды и т.п.)