Вышла Selenide 5.20.1

Вышла Selenide 5.20.1

Ммм, хмм, да, киллер-фича!
23.03.21

Добрый вечер!

Джо Байдена спросили, считает ли он $$.as киллер-фичей. «Ммм, хмм, да», — ответил Байден.

Это сдвоенный обзор на релиз Selenide 5.20.0 и Selenide 5.20.1.


Добавили методы для операций с буфером обмена

  • Selenide.clipboard().setText("111");
  • assertEquals("Hello World", Selenide.clipboard().getText());

Имейте в виду, что на линуксе буфер обмена не будет работать без иксов. Либо запускайте xvfb, либо ещё как-то выкручивайтесь.

Спасибо Dmitriy Budim за PR 1409.

NB! Эти методы переопределены в плагине selenide-selenoid, так что они корректно работают с селеноидом. Для него мы тоже выпустили версию 1.1.0.


Добавили режим headless для браузера Microsoft Edge

Раньше настройка Configuration.headless срабатывала только для Chrome и Firefox, а теперь ещё и для Edge.

(Браузеры IE, Opera и Safari, насколько я знаю, до сих пор не поддерживают headless режим.)

См. issue 1422 и PR 1424.


Добавили метод $$.as() для задания алиаса коллекциям

Как вы помните, в Selenide 5.17.0 мы добавили возможность задавать единичным элементам “понятное” имя. Теперь имя можно задавать и коллекциям:

$(By.xpath("/long/ugly/xpath[1][2][3]")).as("Login button").shouldBe(visible);
$$(By.xpath("/long/ugly/xpath[1][2][3]")).as("Login buttons").shouldHave(size(2));

См. issue 1389 и PR 1431.

NB! Не торопитесь использовать эту возможность. Лично я воспринимаю её как “хак последней надежды”.
В отчёте всегда лучше видеть настоящий локатор, чем кем-то придуманное имя, которое всегда может оказаться:

  • Обманчивым
  • Устаревшим
  • Вводящим в заблуждение

Лучше инвестируйте свои усилия в то, чтобы использовать читаемые локаторы. Ну и грамотно называть переменные и методы. Вот где сила, брат!


Добавили проверку для коллекций containExactTextsCaseSensitive

Существующий метод $$.shouldHave(texts("a", "b", "c")) проверяет, что в коллекции ровно эти элементы и никаких больше. А иногда хочется менее строгой проверки. Например, нужно проверить, что в списке торгуемых валют точно есть RUB, EUR, USD - и какие угодно ещё.

Теперь для этого есть метод:

  $$.should(containTexts("RUB", "EUR", "USD"));

Спасибо Oleg Berezhnoy за PR 1426.

UPD В оперативно вышедшей Selenide 5.20.1 его переименовали в

  $$.should(containExactTextsCaseSensitive("RUB", "EUR", "USD"));

Спасибо Oleg Berezhnoy за PR 1438 и PR 1439.


Починили утерянные опции FirefoxOptions

В некоторых ситуации некоторые настройки Firefox терялись, теперь не теряются. Опции нашлись.

См. issue 1436. Спасибо Dmitriy Budim за PR 1437.


Убрали логирование “поисковых” методов

В SelenideElement есть несколько методов для поиска других элементов:

  • $.findAll()
  • $.parent()
  • $.sibling()
  • $.preceding()
  • $.lastChild()
  • $.closest()

Такие методы оказывались в отчёте дважды: сначала при их вызове, а потом - при вызове любого метода на найденном элементе. Теперь мы это дублирование убрали.

Спасибо Pavel Fokin за PR 1428.



Доска объявлений

Ура, новый сезон конференций открыт! Буквально через неделю-две начинается:

Приходите, всё равно ж делать нечего на карантине!


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

ru.selenide.org

23.03.21