Каким образом описать класс с множеством однотипных элементов?
Вот скажем есть у меня меню со множеством пунктов и подпунктов, каким образом мне описать это дерево?
если делать так:
@Block(@FindBy(className = "af_table_data-body"))
public class FormularsTree extends HtmlElement {
@FindBy(xpath = "//div[.='Формуляры']/span[@class='af_treeTable_icon-container']/a")
public WebElement formularUNFASpan;
@FindBy(xpath = "//div[.='Поступление НФА']/span[@class='af_treeTable_icon-container']/a")
public WebElement releaseUNFASpan;
@FindBy(xpath = "//span[@class='bpmenu_font_color' and text()='Приходный ордер на приемку МЦ']")
public WebElement creditOrderMCLink;
@FindBy(xpath = "//span[@class='bpmenu_font_color' and text()='Акт о приеме-передаче объектов нефинансовых активов (ф. 0504101)']")
public WebElement actOfReceptionAndTransmissionFacilities;
Пока документация есть в файле там же в Гит в корне файл “JDI UI TEST Framework Docs.docx”
А также в виде примеров использования там же пакеты
jdi-uitest-tutorialtests - большой пример тестового сценария
и
jdi-uitest-webtests - много маленьких тестов на методы-примеры
jdi-uitest-webtests
Мы сейчас работаем над сайтом и большим количеством примеров так что если заинтересовало следите за обновлениями )
там еще много других прикольных фишек, по элементам есть спец пейджобджекты для форм и большой класс таблиц с кучей действий над ними.
К примеру форму можно объявить так:
…
loginForm.login(new User(“user”, “P@ssw0rd”)); - заполняет форму и нажимает кнопку loginButton
loginForm.submit(new User(“user”, “P@ssw0rd”)); - тоже самое
loginForm.fill(User.AdminUser); - только заполняет форму
Map<String, String> userPairs = new HashMap();
userPairs.put(“name”, “user”);
userPairs.put(“password”, “P@ssw0rd”);
loginForm.verify(userPairs) - проверяет заполнены ли поля формы в соответствии с Map
…
Причем локаторы у всех элементов будут включать родительский (его можно не указывать)
т.е. допустим локатор для loginButton будет равен
css = #loginForm .loginButton
и так для всех элементов
во всех методах можно использовать как объект, так и Map. название поля в User должно совпадать с названием поля в LoginForm т.е.
public class User {
private String name
private String password;
}
Завтра приду на работу, скину сюда презенташку ) А подробнее будет большая презентация на SQA Days
Наверно версия 1.0.1 еще не опубликовалась в Maven Central (можно попробовать 1.0.0). Но он точно есть в sonatype
Добавьте в pom такую запись и должно заработать
Здравствуйте Андрей! я в проект хочу продвинуть selenide+cucumber+allure/serenity с возможностью запуска из Selenium Grid`a и развёртывании из Docker.
Но вопрос не по этой теме - можно ли использовать “классическую” модель Page Object вместе с динамическим локатором, как Вы показали в выше в примере. Хотелось бы использовать “классическую” модель, а где нельзя - то динамический XPATH.
что доллар означает - обозначение вебэлемента?
val - записать значение в этот вебэлемент (если это input или textarea), а почему у него есть метод pressEnter? это методы нажатия на клавиатуру?
читается пока не очень очевидно, по крайней мере мне
@Viktor_Borisov
Да, $ - это вебэлемент. val - установка значения в поле, pressEnter - нажать enter.
Как пишется, так и читается - один-в-один.
Ну, это же обычное дело: ставишь курсор в поле (того же самого гугла), вводишь пару букв и нажимаешь ввод. Я даже маму научил так делать.
Ну, не более неочевидно, чем любой пример на любом другом незнакомом языке/фреймворке.
В данном случае синтаксис 100% узнаваем для всех, кто хоть как-то сталкивался с веб-разработкой (JQuery). Если же $ и val дико не нравятся, есть и более длинный, но типа человекочитаемые аналоги: