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.InitElements
return是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);
}
我认为您只需将此构造函数添加到您的页面即可。
我在 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.InitElements
return是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);
}
我认为您只需将此构造函数添加到您的页面即可。