Вышла Selenide 7.8.0

Вышла Selenide 7.8.0

Эспрессо макиато!
02.04.25

Mi amore, mi amore!

Сегодня вечером мой экстра зарелизил Selenide 7.8.0.

Интересно, мой интра завтра утром откроет этот текст и узнает ли про новые возможности в Selenide?


Новые функции для Appium

Для фанатов мобилок мы добавили три функции:

  • активировать приложение,
  • остановить приложение,
  • перезапустить приложение.

Все эти методы можете найти в классе SelenideAppium:

import static com.codeborne.selenide.appium.SelenideAppium.*;

activateApp("com.saucelabs.mydemoapp.rn");

terminateApp("com.saucelabs.mydemoapp.rn");
terminateApp("com.saucelabs.mydemoapp.rn", ofSeconds(10)); // with timeout

relaunchApp("com.saucelabs.mydemoapp.rn");
relaunchApp("com.saucelabs.mydemoapp.rn", ofSeconds(20)); // with timeout

Спасибо Aliaksandr Rasolka за PR 2964.


Удалять фильтры из прокси

Ровно 7 лет назад мы добавили возможность добавлять перехватчики запросов-ответов в селенидовский прокси.
С их помощью вы могли логировать запросы, мокать или исправлять ответы сервера, добавлять заголовки, обходить авторизацию и даже тестировать безопасность.

А теперь появилась возможность удалять эти фильтры.
Это на тот случай, если вам нужен какой-то фильтр лишь в одном тесте, а в других он мешает.

Как всегда, пример можете подсмотреть в тестах самого селенида:

// добавляем фильтры
getSelenideProxy().addRequestFilter("proxy-usages.request", ...);
getSelenideProxy().addResponseFilter("proxy-usages.response", ...);

// ... тут ваш тест ...

// удаляем фильтры, которые больше не нужны
getSelenideProxy().removeRequestFilter("proxy-usages.request");
getSelenideProxy().removeResponseFilter("proxy-usages.response");

См. PR 2981, а также BUP 481.


Аннотация @ShadowHost

Лет 5 назад мы добавили методы для работы с Shadow DOM.
Они позволяли искать элементы внутри Shadow DOM через стандартный доллар:

$(shadowCss("#anyButton", "#shadow-host")).click();

А потом добавили ещё и рекурсивный поиск по shadow dom.

А теперь то же самое можно делать не только через доллар, но ещё и через аннотацию @ShadowHost в пэдж обжектах:

class PageObject {
  @ShadowHost(@FindBy(id = "shadow-host"))
  @FindBy(css = "#inputInShadow")
  SelenideElement input;

  @ShadowRoot
  @FindBy(css = "#shadow-container")
  ShadowContainer shadowContainer;
}

Спасибо Ilya Koshaleu за PR 2968.


Причесали комбинированные атрибуты в отчётах

Пару лет назад мы добавили комбинированные атрибуты для мобилок.

Почитайте тот пресс-релиз, вот же были времена, писали тексты!

А теперь мы заметили, что они не очень выглядят в отчётах, и подправили.

Например, вот такая проверка:

$.shouldHave(attribute(
  android("content-desc").ios("name"), 
  "Чёртова картошка по выходным"
));

Раньше выглядела в отчётах так:

Element should have attribute 
  com.codeborne.selenide.appium.conditions.CombinedAttribute@47b530e0
     ="Чёртова картошка по выходным"

Ну, ужас, но не ужас-ужас-ужас!

А теперь будет так:

Element should have attribute @content-desc|@name="Чёртова картошка по выходным"

См. issue 2967 и PR 2971.


Обновились на Selenium 4.30.0

Тут всё понятно, подняли Selenium с 4.29.0 до 4.30.0, в т.ч. подняли версию CDP с 133 до v134.

См. PR 2979.


Новости



Por favore, por favore, expresso upgrado corneo!


Андрей Солнцев

ru.selenide.org

02.04.25