Куда поместить элементы Findby из PageClasses

Я готовлю testFramework и задаюсь вопросом, стоит ли хранить все объекты Findby в PageClasses, например:

У меня есть PageClasses:

public class MainPage extends BaseExtendablePage implements Dataaa {

@FindBy(xpath = photo1) WebElement photo1;
@FindBy(xpath = "//p/i/a/img[@src= 'http://demoqa.com/wp-content/uploads/2014/08/pattern-14-300x237.png']") WebElement photo2;
@FindBy(xpath = "//div/i/a/img[@src= 'http://demoqa.com/wp-content/uploads/2014/08/pattern-14-300x237.png']") WebElement photo3;
...

Я пробовал что-то вроде реализации интерфейса Dataaa и вставки в него хотя бы String из xpath, id ...:

public interface Dataaa {

String photo1 = "//p/a/img[@src= 'http://demoqa.com/wpcontent/uploads/2014/08/pattern-14-300x237.png']";
}

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

Можете ли вы пролить свет на то, чем ваш PageClasses отличается от PageObjects?

DebanjanB 14.03.2018 20:10

Я не улавливаю твой вопрос :(

Dawid 14.03.2018 20:26

@DebanjanB Я думаю, они должны быть такими же. Чтобы ответить на вопрос OP, локатор, определенный в аннотации FindBy, должен быть литералом или константой, поэтому, если вы хотите определить String, это должен быть final String

Bill Hileman 14.03.2018 20:27

Кроме того, @FindBy(xpath = photo1) WebElement photo1; не имеет смысла в любой ситуации, поскольку он самореферентный.

Bill Hileman 14.03.2018 20:29

так что оставьте все как есть или переместите строки в интерфейс?

Dawid 14.03.2018 22:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В нашем проекте мы сохраняем элементы объекта PageObject, которому он принадлежит. Если на нескольких страницах используются элементы, мы пытаемся поделиться ими через общих родителей.

Если вы хотите, чтобы строки / локаторы хранились отдельно, вы можете создать класс констант и сохранить их как константы:

public class Const {

    private Const() {}

    public static final String PHOTO1 = "//p/a/img[@src= 'http://demoqa.com/wpcontent/uploads/2014/08/pattern-14-300x237.png']";
    public static final String PHOTO2 = "//p/i/a/img[@src= 'http://demoqa.com/wp-content/uploads/2014/08/pattern-14-300x237.png']";
...
}

Помните о соглашениях Java: константы должны определяться заглавными буквами.

Другие вопросы по теме