Я готовлю 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']";
}
Это хороший способ или есть лучшая идея сохранить эти элементы или как переместить их в другое место?
Я не улавливаю твой вопрос :(
@DebanjanB Я думаю, они должны быть такими же. Чтобы ответить на вопрос OP, локатор, определенный в аннотации FindBy, должен быть литералом или константой, поэтому, если вы хотите определить String, это должен быть final String
Кроме того, @FindBy(xpath = photo1) WebElement photo1; не имеет смысла в любой ситуации, поскольку он самореферентный.
так что оставьте все как есть или переместите строки в интерфейс?




В нашем проекте мы сохраняем элементы объекта 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: константы должны определяться заглавными буквами.
Можете ли вы пролить свет на то, чем ваш
PageClassesотличается отPageObjects?