2012-04-09 18 views
0

WebDriverとPageFactoryでは、Javaを使用して新しい自動化プロジェクトを実装しています。Pag​​eObjectを作成するさまざまな方法を試しています。私たちはいくつかのアイデアに耳を傾けており、私たちがコーナーに自分自身を取り組まないようにしたいと考えています。PageFactoryを使用してWebDriver PageObjectを初期化して使用するにはどうすればよいですか?

WebDriverのドキュメントに記載されているように、PageFactoryに初期化されたWebDriverと、新しいPageObjectを作成するためのクラステンプレートを提供するのが最善でしょうか? PageObjectは、おそらくそのURLとして、自分自身について多くを知っているので

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"); 
    } 
    } 
} 

しかし、我々は、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だけで初期化対インスタンス化を行う有することに利点の多くが表示されていないと仮定。

おかげ

答えて

0

ワン:

シナリオ:アプリケーションで

は、あなたがページ内の100個のフィールドを持っています。同じページが50回呼び出されます。

Page Object meansを使用してこのようなシナリオを実行すると、各要素が何度も繰り返し検出されます。パフォーマンスが低下する可能性があります。

ページファクトリを使用して同じシナリオを実行すると、初めてのみ要素が検出され、キャッシュから取得されます。これにより、パフォーマンスが向上します。

0

最良の方法は、PageObjectsとその初期化アウト抽象ゲブとトゥキュディデスのようなフレームワークをさせることです。私はこのためにGeb + Spock BDDの組み合わせを使用しており、これまでの結果は優れています。ページ工場の利点の

関連する問題