Как максимально автоматизировать работу с Selenium?
Добрый день. Подскажите, пожалуйста, наиболее правильный путь для автоматизации работы с Selenium. Суть:
Есть некий сайт, написанный на asp.net, куда пользователи подгружают данные, которые в последующем попадают в таблицы MSSQL в зависимости от выбора пользователя. Далее я запускаю программу (wpf, c#), которая считывает данные с определённой таблицы и начинает заполнять данные на веб-сайте, используя Selenium. Всего есть три таблицы, три алгоритма заполнения данных, написанных на c#, и, соответственно, три программы каждая со своим алгоритмом. Что хочется:
Автоматическое запускание программы при поступлении новых данных в БД. С этим приблизительно понятно - по таймеру запускаем проверку наличия новых данных в БД и если есть, то запускаем программу. В чём есть вопросы:
Не получится одновременно запустить программы с разными алгоритмами на одном компьютере - может сделать три виртуальных машины под Windows? Но тут проблема т.к. возможно добавление большого количества алгоритмов и, соотвественно, дополнительных виртуальных машин.
Краем уха слышал про Docker - может ли он пригодиться здесь?
Возможно есть какие-то более правильные другие варианты?
Павел Сайт - по сути место через которое пользователи загружают данные в БД (загружают файлы Excel, которые обрабатываются и заносятся в БД). С сайтом, как раз, проблем нет.
Smilleey, т.е. пользователи загружают на сайт данные, которые будут через selenium внесени в другие сайты?
Тут необходимо понять, нужен ли вообще селениум. Если на целевом сайте, куда вносятся данные роботом, используется js, то лучше через selenium. Если js нет, то можно обычными http методами эти данные вносить.
Что касается selenium и docker. То делается это достаточно просто. В отдельном контейнере запускается selenium-hub, он является хостом для нодов. В отдельных контенейрах можно запускать уже сами ноды, которые подключаются к хабу и ждут команды. Хаб уже сам определяет какую ноду запустить. Можно ли это запустить под windows не знаю, под linux работает нормально. Количество нод зависит только от производительности машины, но это легче чем виртуальная машина.
Павел Да всё так, пользовательские данные заносятся на сторонний сайт с кучей JS'a, поэтому и используется хром для этого. Насчёт selenium hub спасибо, почитаю.
Талик: Ну по сути есть три программы, которые по-разному заполняют данные в формах в стороннем сервисе. Бывает такое, что вылетают исключения и в программе заложен алгоритм перезапуска. Т.е. программа закрывает все окна Chrome, заново заходит на сервис и продолжает с места остановки. При таком алгоритме в случае исключения в одной из программ все остальные окна Chrome будут закрыты...
Smilleey, есть инструмент Selenoid. он работает как раз с докером и призван оркестрировать ноды и хаб селениума. Возможно вам поможет.
Как вариант, вы ставите 3 ноды, а в каждой из программ ставите капабилити для определенной ноды... и у вас будут запускаться каждая программа на своей ноде aerokube.com/selenoid/latest/#_port_tmpfs_and_path