【发布时间】:2012-04-09 12:54:50
【问题描述】:
通过 WebDriver 和 PageFactory,我们正在使用 Java 实现一个新的自动化项目,并且我们一直在尝试各种创建 PageObjects 的方法。我们对一些不同的想法感到困惑,并希望确保我们不会陷入困境。
是否最好按照 WebDriver 文档中的说明向 PageFactory 提供已初始化的 WebDriver,以及创建新 PageObject 的类模板?
driver.get(URL);
PageObject page = PageFactory.initElements(driver, PageObject.class);
// elsewhere
class PageObject {
private WebDriver driver;
public PageObject(WebDriver driver) {
this.driver = driver;
this.validateUrl();
}
public void validateUrl() throws Exception {
if (!driver.getUrl().equals(url)) {
throw new Exception("URL not valid");
}
}
}
但是,既然 PageObject 知道很多关于它自己的信息,比如它的 URL,我们可以不让 Page Object 来做这项工作吗?
PageObject page = new PageObject(driver);
page.goToUrl();
// elsewhere
class PageObject {
private WebDriver driver;
private String url;
public PageObject(WebDriver driver) {
PageFactory.initElements(driver, this);
}
public void goToUrl() {
driver.get(url);
}
}
我想我认为让 PageFactory 进行实例化与仅进行初始化相比没有太大的优势,但是如果有原因的话,我不想偏离架构师的标准设置。
谢谢
【问题讨论】:
标签: java design-patterns webdriver instantiation pageobjects