jdi-testing / jdn-ai

JDN – is the Chrome plugin for UI test automation. It helps Software Test Automation Engineer to create Page Objects for the test automation framework and start test development fast
MIT License
9 stars 3 forks source link

[US-15-5] Давать возможность адресовать элемент сразу несколькими локаторами #1181

Open AlexeyGirin opened 1 year ago

AlexeyGirin commented 1 year ago

As a user And locators were generated by a system I want to address an element by different locators So that уточнить у Артёма

DESCRIPTION:

DEPENDENCIES:

1180

ACCEPTANCE CRITERIA:

COMMENTS:

Пример: Два локатора:

  1. //*[@data-ved='0ahUKEwjm08TS2Lr-AhXUU6QEHbhBDLIQ4dUDCBE']
  2. //*[@name='btnK']

by default - chain (OR) (Так хочет Артём - что бы было как папетире)

Вариант для JDI

@UI("//*[@data-ved='0ahUKEwjm08TS2Lr-AhXUU6QEHbhBDLIQ4dUDCBE']")
@UI("//*[@name='btnK']")
public Button btnK;

Вариант для VIVIDUS: image

Вариант для Селениума:

@FindAll({@FindBy(xPath="//*[@data-ved='0ahUKEwjm08TS2Lr-AhXUU6QEHbhBDLIQ4dUDCBE']"),
           @FindBy(xPath="//*[@name='btnK']")})
public webelement btnK;

Селениум предоставляет возможность для более сложных вариантов: https://stackoverflow.com/questions/45278946/how-to-use-multiple-locators-to-find-an-element-in-selenium-webdriver как минимум - для xPath

AlexeyGirin commented 1 year ago
  1. Лоу приорити
  2. В зависимости от контекста - элемент может поменяться
SemyonKuznetsov commented 1 year ago
pnatashap commented 1 year ago

Как написано для Selenium работать не будет. Для него есть @FindAll (я не знаю почему изменяет регистр, по ссылке правильное имя, оно регистрозависимо)(https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/support/FindAll.html) в этом случае условия объединяются по ИЛИ и @FindBys - для объединения по И и последовательность имеет значение (https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/support/FindBys.html)

pnatashap commented 1 year ago

в JDI несколько локаторов НЕ поддерживается, можно уточнить у @RomanIovlev что предполагалось (у аннотации UI например стоит свойство, что их может быть несколько, но берется всегда одно из них, согласно вот этому куску кода https://github.com/jdi-testing/jdi-light/blob/master/jdi-light/src/main/java/com/epam/jdi/light/elements/init/InitActions.java#L168C79-L168C79 )

AlexeyGirin commented 1 year ago

Всё это есть в папетире ( объединение ИЛИ)

SemyonKuznetsov commented 1 year ago

Задачу убрали на сбор требований