Рейтинг  

Яндекс.Метрика
Яндекс цитирования
 

   

Статистика  

Пользователи
7
Материалы
592
Кол-во просмотров материалов
2825102
   

Документ вдохновлён вот этим видео - Selenoid или Selenium Grid - что лучше? (с 21 минуты)


Как я понял из 'рассказов' в интернете, selenoid - продукт команды Aerokube. В docker hub-е он находится так:



Но напрямую мы их скачивать не будем!
Так как настройка selenoid не сильно проста, то ребята из Aerokube сделали Configuration Manager, который сильно упрощает запуск нужных нам контейнеров. Configuration Manager скачивается со страницы Download latest Selenoid Configuration Manager - здесь выложены бинарные (исполняемые) файлы для разных операционных систем. Для 64-х-битной windows 10 файл называется cm_windows_amd64.exe (для работы переименуем его в cm.exe). В инструкции к Configuration Manager этот бинарный файл указывается либо cm либо cm.exe.
Первая команда для запуска по инструкции:

cm.exe selenoid start --vnc



Произведётся скачивание образов с 2-мя последними версиями браузеров Chrome, Firefox, Opera, а также образ video (для просмотра видео тестов) и сгенерируется файл browsers.json.


Файл browsers.json

создастся во время 'установки' командой 'cm.exe selenoid start --vnc'. Он будет расположен по пути:
C:\Users\<USER_HOME_DIRECTORY>\.aerokube\selenoid\browsers.json

Именно этот каталог (C:\Users\<USER_HOME_DIRECTORY>\.aerokube\selenoid\) монтируется в контейнер selenoid-а при его запуске - т.е. контейнер selenoid использует файл browsers.json именно по этому пути.

{
    "chrome": {
        "default": "116.0",
        "versions": {
            "115.0": {
                "image": "selenoid/chrome:115.0",
                "port": "4444",
                "path": "/"
            },
            "116.0": {
                "image": "selenoid/chrome:116.0",
                "port": "4444",
                "path": "/"
            }
        }
    },
    "firefox": {
        "default": "117.0",
        "versions": {
            "116.0": {
                "image": "selenoid/firefox:116.0",
                "port": "4444",
                "path": "/wd/hub"
            },
            "117.0": {
                "image": "selenoid/firefox:117.0",
                "port": "4444",
                "path": "/wd/hub"
            }
        }
    },
    "opera": {
        "default": "100.0",
        "versions": {
            "100.0": {
                "image": "selenoid/opera:100.0",
                "port": "4444",
                "path": "/"
            },
            "99.0": {
                "image": "selenoid/opera:99.0",
                "port": "4444",
                "path": "/"
            }
        }
    }
}



В Docker-е мы сможем наблюдать скаченные образы selenoid-а и его дочерних образов-браузеров (selenoid/chrome, selenoid/firefox, selenoid/opera) с указанием версии в колонке Tag:



Основной контейнер selenoid-а будет запущен:



В браузере по адресу http://localhost:4444/ сможем увидеть, что selenium (selenoid) работает. Также, по ссылке http://localhost:4444/status сможем увидеть json-ответ, в котором видны будут версии поддерживаемых для тестов браузеров.



Лог запущенного контейнера selenoid будет выглядеть так:



Теперь нужно запустить web-интерфейс selenoid-а (это отдельный контейнер selenoid-ui) по типу web-интерфейса selenium hub (localhost:4444/wd/hub). Для этого исполним команду из инструкции, но только с указанием порта, по которому будем добираться до UI. Порт 8080 занят docker-ом, 8081, 8082 у меня тоже заняты, поэтому используем порт 8084:

cm.exe selenoid-ui start --port 8084



В Docker-е появится новый запущенный контейнер selenium-ui:



В браузере по адресу http://localhost:8084/ увидим, что всё работает:



Внутри контейнера selenoid-ui на закладке Inspect можем увидеть, что стандартный порт запуска 8080 (такой же как у Docker-а). Поэтому нам нужно было при запуске selenoid-ui менять порт на 8084:



Теперь можно в web-интерфейсе selenoid-ui перейти на закладку 'CAPABILITIES' (http://localhost:8084/#/capabilities/). Там увидим какие браузеры нам доступны:



А выбрав язык программирования в правой колонке - увидим код, который нужно вставить, для подключения к selenoid:



Для большего понимания поясню:
1. Если проводить аналогию с Selenium Hub, то selenoid и есть тот самый - Hub, а дочерние контейнеры-браузеры - это ноды (Node), на которых всё действие и происходит.

2. selenoid-ui - web-интерфейс к selenoid-у, в котором можно запускать браузеры из списка браузеров (как этим пользоваться, пока не разобрался) и наблюдать статистику текущего использования. Как происходит запуск браузеров: в selenium-ui указываете нужный браузер - selenium-ui отправляет запрос в selenoid и уже selenoid подгружает образ с нужной версией браузера и отдаёт 'картинку' в selenium-ui. Нечто подобное происходит и с запуском тестов - Вы запускаете тест с указанием нужной версии браузера - selenoid подгружает нужный образ указанного браузера в своём контейнере (посмотрите в логах selenium-а) и выполняет на нём Ваши тесты.

Здесь по логам видно, что selenoid подгружает контейнер с нужным браузером, отрабатывает на нём сессию и удаляет подгруженный контейнер-браузер.



В итоге имеем работающий Selenoid, готовый к работе с нашими тестами.



Заметки

Параметр desired_capabilities - устарел и вырезан из webdriver (по состоянию на середину 2023 года). Вместо него нужно использовать параметр options, в который передаётся объект Options (from selenium.webdriver.chrome.options).


Доки в продолжение...

  • Список образов браузеров для Selenoid
  • Как использовать Selenoid для запуска тестов на удаленных браузерах с помощью Docker и Selenium? (07.04.2023)


  • Вложения:
    Скачать этот файл (browsers.json)browsers.json[ ]1 Кб
       
       

    Login Form