Java 如何在测试框架中隐藏页面对象初始化

How to hide the Page Object Initialization within the Test Framework in Java

我在 java 中开始使用 selenium,但在 c# 中我有更多经验。

我想知道是否可以在 Java 的测试框架中隐藏页面对象初始化。

在 c# 中我知道如何使用泛型类型 T 和约束

public static class Page {

    private static T GetPage<T>() where T : new()
    {
        var page = new T();
        PageFactory.InitElements(BrowserFactory.Driver, page);       
        return page;
    }

    public static HomePage Home
    {
        get { return GetPage<HomePage>(); }
    }
}

我测试中的调用是:

{...

    Page.Home.ClickOnMyAccount()

...}

其中 ClickOnMyAccount 将是主页的方法 class

我不知道这是否可行java?会怎样?

PageFactory.InitElementsreturn是class的一个实例,你可以return它

public static class Page {
    private static <T> T GetPage(Class<T> page) {
        return PageFactory.InitElements(BrowserFactory.Driver, page);       
    }

    public static HomePage getHomePage() {
        return Page.GetPage(HomePage.class);
    }
}

使用

Page.getHomePage().ClickOnMyAccount();

将您的初始化放入构造函数中。喜欢:

public Page(){
    PageFactory.InitElements(BrowserFactory.Driver, this);
}

我认为您只需将此构造函数添加到您的页面即可。