Вчера мы выпустили 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
