使用Java WebDriver和PageFactory,我們正在實現一個新的自動化項目,並且我們一直在嘗試使用各種方法創建PageObjects。我們對一些不同的想法有所詬病,並且想確保我們不會把自己變成一個角落。什麼是使用PageFactory初始化和使用WebDriver PageObject的最佳方式?
如WebDriver文檔中所記錄,最好是將一個初始化的WebDriver提供給PageFactory,以及用於創建新Page Page的類模板?
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對象做的工作?
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做實例而不是隻初始化,但是我不希望從標準設置由建築師去流浪,如果有它的一個原因。
感謝