Вчера мы выпустили Selenide 7.0.0 и, честно говоря, я ожидал волны жалоб насчёт Java 17.
Но нет. На Java 17 никто пока не жаловался. И это здорово! Все обновили джаву, все молодцы.
Но зато люди очень просили обратно циклы по коллекциям.
Так и быть, в сегодняшнем Selenide 7.0.1 мы кое-что вернули:
- Вернули циклы по коллекциям
- Вернули метод
isEmpty()
у коллекций - Вернули поле
self
в контейнерах - Переименовали
CollectionCondition
вWebElementsCondition
- UPD 7.0.2: Обновились на Selenium 4.15.0
Вернули циклы по коллекциям
Теперь вы можете снова использовать for
по коллекциям:
for (SelenideElement element : $$(".element")) {
element.shouldBe(visible);
}
А я не устану повторять, что
НЕ НАДО ТАК ДЕЛАТЬ!
Не используйте циклы и условия в тестах!
Если вы хотите собрать в кучу тексты или атрибуты всех элементов, чтобы потом и проверить, то для этого есть т.н. “collection condition”:
$$(".errors").shouldHave(texts("One", "Two", "Three"));
$$("#numbers option").shouldHave(attributes("value",
"one", "two", "three", "four", "five"));
А если вы не нашли готовой проверки под ваши нужны, легко можете написать свою.
Просто создайте класс от WebElementsCondition
и реализуйте в нём метод check
. Ну изи же.
И сможете его переиспользовать в куче своих тестов.
См. PR 2533.
Вернули метод isEmpty()
у коллекций
Мне по-прежнему непонятно - зачем, но зачем-то люди используют этот метод:
boolean errorsFound = $$(".error").isEmpty();
См. PR 2533.
Вернули поле self
в контейнерах
В релизе 7.0.0 мы удалили класс ElementsContainer
, а с ним пропал и метод getSelf()
.
Я всё ещё нахожу его странным, но всё же люди его используют.
Если это про вас, то вы можете заменить метод getSelf()
на поле с аннотацией @Self
:
static class RadioButton implements Container {
@Self
SelenideElement label;
@FindBy(tagName = "input[type=radio]")
SelenideElement input;
}
См. PR 2534.
Переименовали CollectionCondition
в WebElementsCondition
Вас это коснётся, только если вы писали самодельные проверки для коллекций.
Не беда, просто поменяйте extends CollectionCondition
на WebElementsCondition
.
См. issue 2372 и PR 2533.
UPD 7.0.2: Обновились на Selenium 4.15.0
Позже мы выпустили Selenide 7.0.2 с обновлением на последний Selenium 4.15.0
Тут ченджлог селениума.
См. PR 2540.
ru.selenide.org
26.10.23