将 PageClasses 中的 Findby 元素放在哪里

Where to put Findby elements from 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 并将至少来自 xpath、id 的字符串放入其中...:[=​​12=]

public interface Dataaa {

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

保留这些元素或如何将它们移动到其他位置是一种好方法还是有更好的主意?

在我们的项目中,我们将元素保存在它所属的 PageObject 中。如果有更多页面使用的元素,那么我们尝试通过common parents.

共享

如果要将 Strings/Locators 单独存储,可以创建一个 Constants class 并将它们存储为常量:

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约定:常量应该用大写字母定义。