А идентификация элементов в Selenide используется "на месте"?

java
selenide
Теги: #<Tag:0x00007fedc03ae3e0> #<Tag:0x00007fedc03ae138>

#1

Добрый день! А идентификация элементов в Selenide используется “на месте”?

Смотрю примеры кода и вижу такие вещи:

$("#statement-2 .transaction-row a").click();
$("#transaction-dialog #transaction-header").shouldHave(text("Transaction details"));

А если эти элементы у меня часто в тестах встречаются? Вынести в одно место строки идентификации и потом их вставлять в $() ?

Типа так:

$(identiferStr).click();

Или может есть какой другой подход?


Selenide: Лаконичные UI тесты на Java
(Bohdan Harasym) #2

Page Object вам не подходит?


(Bohdan Harasym) #3

тут целая тема))) с бурным обсуждением:


(Eugene Moskalenko) #4

ну лучше в пейджобжекте обьявлять эти переменные и потом использовать где тебе надо нужную переменную


(Roma Marinsky) #5

Ну можешь как угодно объявлять локаторы/элемнеты для тестов. ДЕлай как удобно
Можно как By buttonSubmit = By.cssSelector("#ololo")
Можно как SelenideElement buttonSubmit = $("#ololo")
Можешь с аннтоациями объявлять элемнеты
МОжешь вообще как стринга объявлять локаторы
МОжешь не объявлять локаторы для уникалаьных элементов над одним бизнес действием


#6

Спасибо! Это я всё вроде бы понимаю =)
Просто мне показалось, что Селенид задуман вне концепции PageObject pattern. Тем более я читал, что автор Селенида не одобрительно к нему относится.

Смотрел примеры кода с использованием Селенида и видел как идентификация элементов происходила в самих тестах, вот и возник вопрос.


(Roma Marinsky) #7

Селенид поддерживает Page Object. Делай с ним что хочешь, тебе ж с ним жить)


(asolntsev) #8

@Viktor_Borisov Вот плохо, когда “слышал звон, не знаю, где он”. :frowning:

Автор Селенида не то чтобы неодобрительно относится к паттерну PageObject. Сам по себе паттерн кажется вполне разумным. Автор Селенида считает, что в большинстве случаев кажущаяся необходимость в PageObject свидетельствует о более глубинных проблемах в процессе тестирования. Другими словами, если в компании процесс разработки/тестирования правильный (в т.ч. пирамида тестирования правильная), то пользы от PageObject особой не будет.

P.S. А Селенид очень даже поддерживает PageObject, что прямо на главной странице и написано. Более того, у Селенида PageObject’ы получаются короче и проще, чем “классические” с @FindBy.