2016-09-11 12 views
0

私は最初のページオブジェクトモデルテストを作成しています。 Selenium's test design considerationsに基づいて、ページオブジェクトがインスタンス化されたときに特定の要素が見つかることを確認したいと思います。ページオブジェクト要素に動的にアクセスする

あり、かつ、ページオブジェクト内になければならないことができます1、シングル、検証され、そのページは、ページの、おそらく重要な要素は、正しくロードされたことを確認することです。

これを解決する方法はありませんか?私は、一般的にURLの一部(URLは決済ページの「payments.asp」が含まれています)と、いくつかの要素識別することによって、私は右ページ上だと私はこれを行うことを確認するために、コンストラクタを使用し

public class PageObject 
{ 
    [FindsBy(How = How.Name, Using = "q")] 
    private IWebElement q1 { get; set; } 

    [FindsBy(How = How.Name, Using = "qq")] 
    private IWebElement q2 { get; set; } 

    protected IWebDriver webDriver; 

    public PageObject(IWebDriver webDriver) 
    { 
     this.webDriver = webDriver; 

     PageFactory.InitElements(webDriver, this); 
     HighPriorityElementsFound(); 
    } 

    private bool HighPriorityElementsFound() 
    { 
     // how to verify all private IWebElements elements here? 
    } 
} 

答えて

0

この特定のページとサイトの他のページとのみユニークです。その要素が存在しない場合は、メッセージを含む例外がスローされ、現在表示されているURLがログに記録されます。これは、着陸予定のページにいない、またはページが正しくロードされていないことを直ちに知ることができるため、役立ちます。

もう1つのメモ... HighPriorityElementsFound()の必要はありません。コンストラクタからそのコードを呼び出すだけなので、そのコードをコンストラクタの中に入れないのはなぜですか?

+0

基本的に私が達成しようとしていることを述べていますが、質問には答えられないのではないかと心配しています。私は 'この特定のページだけにユニークないくつかの要素を抽出するために'動的にコード化された代わりに動的にしようとしています。あなたの最後の文が何を意味しているかわからないコンストラクタから 'HighPriorityElementsFound'を呼び出しています。それが方法であるかどうかは関係ありません。 – filur

+0

あなたのスクリプトは、ユニークな要素とこれまでに訪れたことのない他のすべてのページを識別することができますか? 2番目の点では、関数は再利用可能なコード用です。 'HighPriorityElementsFound()'は決して再利用されないので、なぜそれを関数に入れますか?また、 'bool'を返しますが、戻り値をキャプチャしていないので、' bool'を返すのはなぜですか? – JeffC

関連する問題