Привет, друзья!
Мы выпустили новую версию Selenide 4.5! В основном этот релиз посвящён улучшению производительности самого селенида.
Ускорили метод $.setValue()
В Selenide была крутая фича, про которую, как оказалось, никто не знал: метод $.setValue()
был настолько умным, что умел
проставлять значение не только для простых текстовых полей, но и для выпадающих списков и радио-кнопок. Идея была в том,
что тест должен оставаться стабильным, когда разработчики поменяют тип элемента, скажем, с <select>
на <input type="radio">
.
Но эта “умность” была не бесплатной: во время каждого вызова $.setValue()
Selenide пытался определить тип элемента, а
это несколько вызовов вебдрайвера. То есть несколько десятков (если не сотен) миллисекунд.
Поскольку всё равно никто об этом не знал и не использовал, мы решили отказаться от этой фичи в угоду скорости. Теперь мы сделали это “умное” поведение выключенным по умолчанию. Если кому очень надо, можно его включить следующей настройкой:
-Dselenide.versatileSetValue=true
Хотя есть способ проще:
- либо включите
-Dselenide.fastSetValue=true
, - либо используйте методы
$.selectOption()
и$.selectRadio()
.
Спасибо Alexander Popov за исправление!
Ускорили методы работы с коллекциями
Как оказалось, Селенид пытался быть слишком умным и при работе с коллекциями веб-элементов. Например, следующая проверка:
$$("tr").shouldHave(size(7));
ждала ещё сколько-то миллисекунд (по умолчанию 600 мс), даже если элементов сразу было 7. Потому, что “а вдруг сейчас ещё несколько подгрузится, и будет уже не 7”.
И от этой фичи мы решили отказаться в угоду производительности.
См. pull request 549
Добавили методы $().$x()
и $().$$x()
… для поиска по XPath внутри веб-элемента
Теперь можно писать так:
$("table").$x(".//tr").shouldBe(visible);
$("table").$$x(".//tr").shouldHave(size(5));
Не знаю, зачем, но людям вот нравится…
Спасибо Oleksii Cherevatyi!
Исправили поддержку Opera driver
Не знаю, зачем кому-то понадобился Opera driver, но кому-то понадобился…
Спасибо Roman Marinsky!
Подчистили лишние логи
А именно, удалили это лишнее сообщение при закрытии вебдрайвера:
INFO: Close proxy server: 24 -> null
Спасибо Andrew Zakordonets!
Обновились до org.littleshoot:littleproxy:1.1.2
Это касается только тех, кто использует опцию Configuration.fileDownload=PROXY
Обновились до phantomjsdriver 1.4.3
Я вообще не представляю, кого это касается, но имейте в виду. :)
Добавили много юнит-тестов для самого Selenide
Это мой личный праздник. Andrew Zakordonets решил помочь проекту - взял да и дописал кучу недостающих юнит-тестов для самого Селенида. Вот прямо круто!
Новости
Мы стартанули проект selenide-appium
Мы создали отдельный проект для лучшей поддержки Selenide в Appium framework: github.com/selenide/selenide-appium
Проект пока в зачаточном состоянии, но вполне рабочий. Есть как минимум один реальный проект, где эта библиотека уже используется.
Мы добавили несколько новых проектов в Selenide examples
Как вы знаете, на гитхабе есть серия мини-проектов - примеров использования Selenide с разными инструментами. Недавно мы добавили туда парочку новых примеров:
Мы работаем над новыми примерами. В ближайших - Spring Boot, Allure 2 и бог знает что ещё. Присылайте свои примеры!
А ты помог Selenide?
Дорогой друг! И ты тоже можешь помочь проекту Selenide. Для этого даже не надо быть семи пядей во лбу или иметь 20 лет опыта в разработке.
Вот что ты можешь сделать:
- Просмотреть открытые пуллреквесты и дать свою оценку в комментариях, можно ли мержить эти изменения в Selenide
- Просмотреть открытые тикеты и дать свою оценку в комментариях:
- не фигню ли просят
- не сделано ли это уже
- стоит ли это делать
- Дописать недостающую документацию
- Написать блог-пост
- Дописать недостающие тесты
- Добавить свои примеры использования Selenide с другими инструментами на github.com/selenide-examples.
- Найти добровольца-дизайнера для редизайна сайта (в первую очередь под мобильники)
Любая помощь приветствуется. Как говорится, нас - рать!
ru.selenide.org
26.06.17