t.me/atinfo_chat Telegram группа по автоматизации тестирования

Установка сustom WebDriver DesiredCapabilities и их чтение из сессии браузера

api
java
webdriver
Теги: #<Tag:0x00007f9c594742b0> #<Tag:0x00007f9c594740d0> #<Tag:0x00007f9c594745d0>

(Nik Sidorenko) #1

Доброго времени суток!
Кто-то задавался вопросом о возможности добавлять кастомные DesiredCapabilities в браузерную сессию, а потом их вычитывать через API?

Что-то похожее на это

final DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("custom", "customValue");


(Alexandr D.) #2

До старта браузера задать капабилити или после?

Не совсем понятно в чем сложность.
Через рефлексию можно сделать же.


(Nik Sidorenko) #3

До старта.
Задать не проблема. Задал как показано в вопросе.
Сложность в понимании как и где эти капабилити потом вычитать (и возможно ли это) из браузерной сессии (не в коде приложения, которое запускает браузер)? Например, через API “wd/hub/session”


(Alexandr D.) #4

Сомневаюсь, ведь капабилити вы задаёте в веб-драйвере, а не в браузерной сессии.

Хотя, возможно через селениумовский сервер как-то и можно.

А какая цель-то?


(Nik Sidorenko) #5

Вдаваясь в подробности.
Есть Selenoid GGR, на котором ранаются тесты. Через его API (http://:8888/status) можно получить инфу о том, какие тесты ранаются. Также есть стандартное WebDriver API (http:///wd/hub/session/), через которое можно получить ещё немного информации о сессии драйвера. Есть приложение, которое обращается к этим API и выводит сводную информацию о запущенных тестах, которой не хватает в Selenoid UI.
Хотелось понять, можно ли через капабилити или другим путём добавлять в сессию драйвера инфу, которую потом можно вычитать в Selenoid или WebDriver API.


(Остап Олексин) #6

Дополнительную инфу можно передать с помощью labels - https://aerokube.com/selenoid/latest/#_container_labels_labels и потом вычитать ее в /status эндпоинте в selenoid(если у вас один инстанс) или ggr-ui(если selenoid инстансов много и вы используете ggr)

Выглядит примерно так:

Map<String,String> labels = new HashMap<>();
labels.put("MyTestCapability", "TEST");
capabilities.setCapability("labels", labels);


(Nik Sidorenko) #7

Спасибо огромное! Это то, что нужно. Не заметил этот маленький раздел в документации. Хотя был уверен, что что-то подобное должно быть.