我想在超类静态方法中使用来自子类的静态变量。似乎我无法确保变量存在,因为它是静态的,我不能以这种方式强制执行静态成员。
很高兴,我想在功能上做类似的事情:
protected class Page {
static WebDriver driver = new ChromeWebDriver();
public static boolean onPage () {
return driver.findElements(By.id(PAGE_NAME)) != null;
}
}
public class HomePage extends Page {
static String PAGE_NAME = "home";
}
public class LoginPage extends Page {
static String PAGE_NAME = "login";
}
...
HomePage.onPage();
...
这样的事情的最佳模式是什么?
注意:主要要求是:
答案 0 :(得分:1)
你不能这样做。但是你在基类中有一个final字段并强制每个驱动类为超级构造函数提供一个参数,如下所示
public abstract class Page {
final String pageName;
public Page(String title) {
pageName = title;
}
//the rest implementation
}
然后你可以拥有像
这样的网页public class HomePage extends Page
{
public HomePage()
{
super("home");
}
}
另一种选择是在基页中提供抽象的getPageName并在驱动的类中实现它