yandex-qatools / htmlelements

Html Elements is a Java framework providing easy-to-use way of interaction with web-page elements in web-page tests.
Other
271 stars 116 forks source link

Ability to search for an element by name from the @Name annotation #155

Closed megaman248 closed 4 years ago

megaman248 commented 4 years ago

Используя в BDD сценариях имена элементов, приходится их искать в иерархии классов наследников от HtmlElement. Хотелось бы, чтобы метод findElement(String name) был бы в самой библиотеке htmlelements.

artkoshelev commented 4 years ago

What's wrong with using findElement(By.name("bla"))?

megaman248 commented 4 years ago

What's wrong with using findElement(By.name("bla"))?

У меня сценарии составляются с использованием BDD и для обработки шага, например,

Когда пользователь нажимает кнопку "Вход"

, то по имени "Вход" ищу кнопку в элементе:

@Name("Вход") private Button enter;

Поэтому мне понадобился метод findElement(String name). Будет удобнее, чтобы этот метод был сразу в супер классе HtmlElement.

artkoshelev commented 4 years ago

I need more context probably, but right now i can't see how "BDD-style use-cases" are related to the changes proposed.

megaman248 commented 4 years ago

Вам нужно показать код, показывающий, как шаг BDD мапируется с Java классом и вызывается метод findElement(String name)?

artkoshelev commented 4 years ago

Вам нужно показать код, показывающий, как шаг BDD мапируется с Java классом и вызывается метод findElement(String name)?

Yep, i can't see why you need another findElement(String name) when you already have findElement(By locator) in HtmlElement class

megaman248 commented 4 years ago

Метод findElement(By locator) ищет веб элемент по локатору. В BDD шаге "Когда пользователь нажимает кнопку "Вход"" не передаётся локатор, но передаётся некое имя веб элемента, по которому нужно кликнуть. Это имя - Вход. Поэтому нужен метод findElement(String name), чтобы найти веб элемент по имени, заданному в аннотации @ru.yandex.qatools.htmlelements.annotations.Name("Вход"). Поскольку класс может наследовать по цепочке множество классов, то дополнительно ещё понадобился приватный метод findElement(Class<?> holder, String name) для рекурсивного прохода по всем супер классам, для просмотра в них аннотации @ru.yandex.qatools.htmlelements.annotations.Name

artkoshelev commented 4 years ago

You can either change your BDD method to use existing findElement(By locator) or extend HtmlElement class and add whatever methods you want. I don't see why it should be in framework.