Запуск автотестов на Selenoid - базовые настройки

docker
ubuntu
selenoid
selenium-grid
selenium
webdriver
Теги: #<Tag:0x00007f7b64a313d0> #<Tag:0x00007f7b64a31290> #<Tag:0x00007f7b64a31150> #<Tag:0x00007f7b64a31010> #<Tag:0x00007f7b64a30ed0> #<Tag:0x00007f7b64a30d90>

(Eugene Tsekhmeistruk) #21

контейнер с браузером создавался и через 30 сек убивался. Уже все ок после pull latest. Но всеравно спасибо за советы


(vania-pooh) #22

Да, мы там в последних релизах поправили работу с сетью. Теперь нормально в CentOS должно работать.


(vania-pooh) #23

Если кому интересно, вчера выложили статью про Selenoid. https://medium.com/@aandryashin/selenium-done-in-60-seconds-176796f8bdc7 Скоро перевод доедет до Хабра.


(Сергей Матвеев) #24

Чет последняя версия aerokube/selenoid:latest
При GET http://localhost:4444/wd/hub/ возвращает 404 :thinking:

Соответсвенно, когда разворачиваю на удаленной тачке при запросе ChromeDriver, получаю сообщение в логе докера

[SESSION_FILED] Bad response from [http://172.17.0.3:4444/wd/hub] - [404 NOT Found]


(Павел Сенин) #25

попробуйте этот образ - aandryashin/selenoid


(Сергей Матвеев) #26

проблема решилась удалением строчки

“path” : “/wd/hub”

из browsers.json


(vania-pooh) #27

Да, это не совсем очевидно. В контейнерах с Firefox в настоящее время стоит Selenium Server, в котором сессия создается на /wd/hub. В других же контейнерах (Chrome, Opera) мы ходит напрямую в соответствующий драйвер, поэтому там по-умолчанию нет префикса /wd/hub и сессия создается просто на /. Наша утилита конфигурации (http://github.com/aerokube/cm) учитывает эти различия и сама скачивает свежие образы, поэтому рекомендуем пользоваться ей. Подробнее про это: https://github.com/aerokube/selenoid#quick-start-guide.


(Евгений Погодин) #28

Я как раз сегодня голову сломал, пока понял, почему именно не работает. При этом изначально пользовался Вашей утилитой. Она проставила в browsers.json строчку “path” : “/” для хрома, которую пришлось вручную просто удалить. С ней не работало :disappointed:


(vania-pooh) #29

Вот интересно, с / в Хроме должно работать. Мы проверяли.


(Maxim Karpenko) #30

Дабы не плодить лишних тем, спрошу тут. Можно ли как-то менять настройки запуска xvfb?
Добавил скриншотилку к AfterMethod, показывает, что размер скриншота 945*955, а хотелось бы сделать более-менее стандартный размер.


(Павел Сенин) #31

да - http://aerokube.com/selenoid/latest/#_custom_screen_resolution

Selenoid allows you to set custom screen resolution in containers being run. To do that simply pass screenResolution capability in your tests in form width x height x color-depth:
screenResolution: 1280x1024x24

Я кстати при прогоне тестов на контейнерах, которые поддерживаютVNC, тож замечал, что разрешение экрана по соотношению сторон картинки точно не 1920 на 1080 (д.б. по умолчанию). Может @vania_pooh объяснит, почему так.


(Maxim Karpenko) #32

Тоже вычитал это в доке, делаю так:

DesiredCapabilities browser = new DesiredCapabilities();
        browser.setBrowserName("chrome");
        browser.setVersion("59.0");
        browser.setCapability("screenResolution", "1920x1080");
        driver = new RemoteWebDriver(
                URI.create("http://192.168.4.38:4444/wd/hub").toURL(),
                browser);

Но всё равно не вижу каких-либо изменений размера скриншота.

UPD: повозился с дебагом и запущенными процессами, xvfb всё-таки запускается с нужными параметрами. А вот скриншот получается другого размера. Теперь совсем запутался))


(Yaroslav Pernerovskyy) #33

Вы же учитываете что размер вьюпорта браузера и виртуального буфера xvfb это разные вещи? или там ну совсем разные разрешения?


(Maxim Karpenko) #34

совсем разные, в тесте пытаюсь выставить 1920x1080x24, а скрин получается 945x955x32
селеноид крутится в виртуалке virtualbox, пробовал менять параметры настроек видеосисетмы виртуалки - эффекта тоже не дало.


(vania-pooh) #35

Разрешение экрана там выставляется правильное. Проблема в том, что окно по-умолчанию не распахивается на весь экран. Если сделать что-то типа:

driver.manage().window().setSize(new Dimension(1920, 1080));

… то будет скриншот будет правильный.


(Maxim Karpenko) #36

спасибо! Примерно к тому же дошёл опытным путём. Почему-то браузер в контернере не воспринимает вот это:
driver.manage().window().maximize();
При чем что хром, что ФФ. Пробовал с хромом фуллскрин, так он вообще на нём падает) получилось только через явное указание размера.


(vania-pooh) #37

Как мы думаем это потому что в контейнере нет оконного менеджера, а голый Xvfb.


(vania-pooh) #38

Кстати, на любые вопросы про Selenoid мы отвечаем вот в этом чатике: https://telegram.me/aerokube