WebDriver と PageFactory では、Java を使用して新しい自動化プロジェクトを実装しており、PageObject を作成するさまざまな方法を試してきました。私たちはいくつかの異なるアイデアで引き裂かれており、窮地に追い込まれないようにしたいと考えています。
WebDriver のドキュメントに記載されているように、新しい PageObject を作成するためのクラス テンプレートと共に、初期化された WebDriver を PageFactory に提供するのが最善ですか?
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 に初期化だけではなくインスタンス化を実行させる利点はあまりないと思いますが、理由がある場合は、アーキテクトによる標準設定から逸脱したくありません。
ありがとう