В объектной модели страницы, почему мы используем Webelements вместо Strings в качестве переменных класса? - PullRequest
0 голосов
/ 11 декабря 2018

Проще говоря: при реализации POM-фреймворка мы должны Pagefactory инициализировать все элементы в объекте страницы.Почему мы делаем это вместо того, чтобы хранить селекторы xpath / css в виде строк и вызывать их по мере необходимости?

ex:

@FindBy(xpath = "//Button[text()='Add and Edit']")
@CacheLookup
private WebElement addAndEdit;

против

private String addAndEdit;

1 Ответ

0 голосов
/ 12 декабря 2018

Это не определено как часть объектной модели страницы, это определяется PageFactory, который является вспомогательным классом при инициализации элементов в объекте страницы.Намерение заключается в том, чтобы настроить прокси таким образом, чтобы стратегия местоположения элемента определялась @FindBy, и вы могли ссылаться на WebElement, и он будет искать его при использовании ссылки.

Если вы собираетесь хранить локаторы, не храните строку ... храните вместо By локатор.Он содержит дополнительную информацию о TYPE локатора, например, By.id, By.cssSelector и т. Д. Я думаю, что это более чистый подход, и он не позволит вам каким-либо образом определить, какой тип локатора для этой строкипеременная есть.Это подход, который я использую во всех проектах Selenium, которые я написал и / или поддерживаю.

По словам авторов Selenium, PageFactory не должен использоваться.Смотрите это видео Саймона Стюарта, ведущего коммиттера, в котором говорится, что он не используется (27:26) и так далее, и почему.По ссылке начинается раздел, который ведет в его комментарии к PageFactory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...