Вышла Selenide 7.0.1

Вышла Selenide 7.0.1

Циклы возвращаются
26.10.23

Вчера мы выпустили Selenide 7.0.0 и, честно говоря, я ожидал волны жалоб насчёт Java 17.

Но нет. На Java 17 никто пока не жаловался. И это здорово! Все обновили джаву, все молодцы.
Но зато люди очень просили обратно циклы по коллекциям.

Так и быть, в сегодняшнем Selenide 7.0.1 мы кое-что вернули:


Вернули циклы по коллекциям

Теперь вы можете снова использовать 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