Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

python-альтернатива selenium grid'у через ansible и webdriver

framework
python
Теги: #<Tag:0x00007fedb8602ae0> #<Tag:0x00007fedb86029a0>

(Sergei Chipiga) #1

Всем привет!

Хотел бы рассказать про проект-альтернативу selenium grid’у на python’e. Под капотом используется ansible для оркестрации нод и selenium webdriver для управления браузером (не путать с проектом https://github.com/SeleniumHQ/ansible-selenium).

Проект очень молодой и пока развивается одним человеком, но возможно адептам python’a будет интересно подключиться :slight_smile:

Суть проекта:

  • ansible используется для настройки нод (видео запись, виртуальный буфер, установка пакетов и т.п.), в том числе запускает и останавливает webdriver, к которому можно подключаться удаленно. (Технически это должно работать также как и на localhost’e, если только разработчики webdriver’a специально не ограничили удаленные подключения. Н-р в chromedriver нужно выставлять специальный флаг --whitelisted-ips="".)
  • webdriver используется напрямую через удаленное подключение, для этого нужно переопределить классы браузеров из текущего пакета selenium’a.

Исходники https://github.com/sergeychipiga/dilium
Документация 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-менеджементу (обновление конфига с нодами, улучшение кода распредения хостов, установка браузеров и вебдрайверов на ноды и т.п.)