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

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

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

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

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

Типа так:

$(identiferStr).click();

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

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

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

1 лайк

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

1 лайк

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

2 лайка

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

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

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

2 лайка

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

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

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

3 лайка