Вышла Selenide 3.11

Вышла Selenide 3.11

Последняя в линейке 3.x
14.10.16

Привет!

Мы выпустили Selenide 3.11! Не то чтобы тут много чего поменялось, скорее это просто исторический релиз. Это последний релиз из серии 3.x - последний, что работает на Java 7 и с Selenium WebDriver 2.x

Дальше будет Selenide 4.x: Selenium WebDriver 3.x и Java 8.

Итак, что же вошло в последнюю троечку:

Добавили условие checked

Теперь можно написать нормальное условие для проверки чекбокса:

  $("#i-agree").shouldBe(checked);

Раньше приходилось писать $.shouldBe(selected), что неочевидно. Раз есть чекбокс - значит, он должен быть “checked”.

См. issue 416

Оптимизация getMessage()

В селениуме есть такая странная особенность. Когда вы получаете ошибку из вебдрайвера (то есть любой подкласс SeleniumException), у него вызывается метод getMessage().

А вот этот метод SeleniumException.getMessage() пытается быть слишком умным и добавляет в сообщение об ошибке IP и имя текущего компьютера. А это может занимать очень продолжительное время в зависимости от фазы луны. И оказалось, что Selenide дёргает этот несчастный метод несколько раз подряд.

У меня однажды так и было: я оказался в необычной WiFi сетке, и внезапно мои тесты стало дико тормозить. Пара часов ушло на поиск причины, но это ещё полбеды. Беда в том, что исправить это невозможно - этот код зашит в Selenium WebDriver.

Я лично считаю, что метод getMessage() ничего такого делать не должен. Это вообще не его работа. Пусть тот, кто запускает тесты на своих серверах, сам разбирается, на каких айпишниках он их запустил.

Но авторы селениума прислушаться желают. И всё, что мы можем сделать - это только оптимизировать вызовы getMessage() в Selenide, так чтобы этот злосчастный метод не дёргался повторно.

Что мы и сделали.

См. issue 415



Все в предвкушении Selenium 3.0…

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

ru.selenide.org

14.10.16