Skip to content

Latest commit

 

History

History
129 lines (83 loc) · 8.29 KB

1.10-releasenotes.ru.md

File metadata and controls

129 lines (83 loc) · 8.29 KB

Html Elements 1.10 – What's New?

Прошло какое-то время с момента последнего релиза, и настала пора поделиться с вами, дорогие участники нашего коммьюнити, новой функциональностью. Вот, что мы приготовили для вас в новой версии.

New typified elements

Form

Issue #35

С помощью этого типизированного элмента вы можете очень просто заполнять стандартные веб-формы.
Пусть, например, у вас на странице есть форма, которую нужно заполнить данными, хранящимися в каком-то бине (POJO бизнес-объекте). Сделать это можно очень легко:

MyBean bean = getBean();
Map<String, Object> beanMap = convertToMap(bean); 
form.fill(beanMap);
form.submit();

Вы конвертируете бин в Map, где ключами должны быть имена полей формы, а значениями - данные, которые нужно ввести в поля. При вызове метода fill поля формы будут заполнены значениями, полученными вызовом метода toString у значений переданного Map.

Form javadoc

Table

Issue #36

Этот типизированный элемент позволяет удобно работать с данными, содержащимися в HTML-таблицах.

Table javadoc

FileInput

Issue #41

С помощью элемента FileInput вы сможете легко загружать файлы на сервер при тестировании, даже в том случае, если вы запускаете тесты на удаленном браузере.

FileInput javadoc

TextBlock

Issue #33

Это очень простой типизированный элемент, который пригодится при работе с текстовыми блоками на странице.

TextBlock javadoc

Matchers decoration

Issue #29

В этой версии мы обобщили идеи матчеров WaitForMatcherDecorator и RefreshMatcherDecorator из предыдущей версии и сделали обощенный механизм декорирования матчеров. Теперь можно декорировать матчер ожиданием какого-либо собфтия, действием или условием.

Декориорование матчера ожиданием по таймауту выглядит так:

assertThat(element, should(exists()).whileWaitingUntil(timeoutHasExpired(SECONDS.toMillis(5))));

Задекорировать матчер действием можно так:

assertThat(element, should(exists()).after(pageRefresh(driver)));

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

assertThat(element, should(hasText("Text")).inCase(element, exists()));

Эта конструкция эквивалентна добавлению assumeThat перед проверкой, но гораздо более компактна и позволяет сочетать декорирование условием с декораторами другого типа (см. ниже).

Также можно комбинировать декораторы друг с другом. Например:

assertThat(mailsList, should(hasMailWithSubject("Subject")).after(pageRefresh(driver)).whileWaitingUntil(timeoutHasExpired());

Эта конструкция будет в течении 30 секунд обновлять страницу каждую секунду и проверять, появилось ли на странице в списке писем нужное письмо. Как только письмо появится, матчер закончит свое выполнение и проверка пройдет успешно. В противном случае по истечении таймаута будет возвращена ошибка.

MatcherDecoratorsBuilder javadoc

Improvements and bugfixes

Account of superclasses @Block annotation

Issue #28

Раньше селектор блока определялся по аннотации @FindBy поля класса либо, если она не указана, по аннотации @Block класса этого поля. И поэтому в случае иерархии классов блоков приходилось указывать селектор по умолчанию у каждого из классов в иерархии.
Теперь при определении селектора блока также учитываются аннотации @Block классов-предков. Чем дальше предок по иерархии, тем меньше приоритет его аннотации.

Matchers mistmatch descriptions

Issue #40

В прошлых версиях мы использовали нектороые матчеры из Selenium WebDriver (hasText и hasAttribute), но у них не был переопределен метод describeMismatchSafely. Поэтому сообщения об ошибке для них выглядели неинформативно. В новой версии этот недостаток исправлен.

Named WebElement proxies usage

Issue #39

Теперь при инициализации блоков и типизированных элментов используются именованные прокси для WebElement'ов с тем же именем, что и сам блок или типизированный элемент. Это позволет обладать именем элмента при использовании getWrappedElement в матчерах (напрмиер, в WrapsElementMatcher).

Selenium version update

Версия Selenium обновлена до 2.32.0.