通过 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 进行实例化与仅进行初始化相比没有太大的优势,但是如果有理由的话,我不想偏离架构师的标准设置。
谢谢