Добавить в корзинуПозвонить
Найти в Дзене

Возможен ли универсальный локатор в Intellij IDEA JAVA + Selenium.

Мы с вами уже умеем писать локаторы для наших тестов. Не составит сложности определить уникальный path и кликнуть по нему. Но давайте подумаем как можно усовершенствовать наши локаторы, чтобы было ещё удобнее их переиспользовать? Как сделать Просто? Для начала давайте перейдём на какую нибудь страницу, нам не составит труда это сделать, если есть вопросы по составу данного теста, ознакомьтесь, со статьёй указанной выше, либо вы можете задать свой вопрос в телеграмм канале: Это нам откроет следующую страницу. Обратим на список данных элементов Как будет выглядеть локатор для первого элемента? Можно прописать следующее (//span[@class='rs-text-2 rs-text-2_theme_light _mainSubmenuItem__title_hx12g _mainSubmenuItem__titleWithLogo_09j6'][contains(.,'Aqua')])[1] Сам локатор будет выглядеть следующим образом Теперь представим, что нам нужно заходить в каждый элемент из этого списка и что то там тестировать. Тогда локатор к примеру для второго элемента будет выглядеть так (//span[@class='rs-te
Оглавление

Мы с вами уже умеем писать локаторы для наших тестов. Не составит сложности определить уникальный path и кликнуть по нему. Но давайте подумаем как можно усовершенствовать наши локаторы, чтобы было ещё удобнее их переиспользовать?

Как сделать Просто?

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

Обучение тестированию

-2

Это нам откроет следующую страницу. Обратим на список данных элементов

-3

Как будет выглядеть локатор для первого элемента? Можно прописать следующее

(//span[@class='rs-text-2 rs-text-2_theme_light _mainSubmenuItem__title_hx12g _mainSubmenuItem__titleWithLogo_09j6'][contains(.,'Aqua')])[1]

Сам локатор будет выглядеть следующим образом

-4

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

(//span[@class='rs-text-2 rs-text-2_theme_light _mainSubmenuItem__title_hx12g _mainSubmenuItem__titleWithLogo_09j6'][contains(.,'CLion')])[1]
-5
-6

Обратите внимание, что разница между этими локаторами заключается лишь в названии элемента Span, а все остальные аспекты идентичны. Однако для каждого из них мы создали отдельную переменную. Учитывая, что таких похожих локаторов у нас будет около 100, важно найти способ избежать дублирования кода. Один из возможных подходов я сейчас опишу.

Как сделать Правильно?

Давайте вместо того, чтобы писать одинаковые локаторы и захламлять проект мы напишем метод из локаторов, который будет возвращать нам нужный xpath!

-7
public By IDEs(String value) {
By element = By.xpath("");
return element;
}

Мы разработали метод с использованием By, который позволяет нам изменять локатор на основе параметров. В данном случае у нас имеется один параметр, и это реализуется следующим образом…

-8
public By IDEs(String value) {
By element = By.xpath("(//span[@class='rs-text-2 rs-text-2_theme_light _mainSubmenuItem__title_hx12g _mainSubmenuItem__titleWithLogo_09j6'][contains(.,'"+value+"')])[1]");
return element;
}

Параметров может быть сколько угодно, всё зависит от того, на сколько сложный у вас локатор!

-9

Так как это метод, мы можем сделать его в шаг отчёта Allure

-10

В конечном итоге, использование в тесте такого локатора выглядит так

-11
driver.navigate().back(); - это просто, чтобы вернуться на предыдущую страницу

Соответственно данные локаторы нам больше не нужны

-12

Сгенерируем отчёт Allure

-13

У нас получился повтор обозначения "Нажимаем на элемент" из за того, что сначала идёт метод, который только что создали, а затем ClickElement у которого также есть Step

-14

Не страшно можем убрать Step у локатора

-15

Это уже зависит от вас, если захотите сможете подправить!

Вы можете перейти и ознакомиться с данным проектом на GitHub

GitHub - Timurchik57/JAVA

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию