2017-04-12 11 views
1

私はSeleniumとC#を使ってWebテストを自動化しようとしています。セレンとC#でページオブジェクトモデルに繰り返し可能なセクションを追加するには?

私は、ヘッダーとフッターのような特定のセクションを複数のページにわたって繰り返しているWebアプリケーションを持っています。

セクションSecA、SecB、SecCがあるとします。私のページではPage1は{SecA、SecB、SecC}、Page2は{SecA、SecB}、Page3は{SecB、SecC}を持つように見えます。

すべてのページオブジェクトに重複を作成したくありません。どのようにこれらのセクションを定義し、それを私のページクラスに含めるか?

いくつかのサンプルコードを提供できれば幸いです。

答えて

6
//SecA: 
public class SecA 
    { 
    [FindsBy(How = How.Id, Using = "Id")] 
    private IWebElement SecAField; 
    //Add Getters, setters, methods, constructors, etc.. 

} 

//SecB: 
public class SecB 
{ 
    [FindsBy(How = How.Id, Using = "Id")] 
    private IWebElement SecBField; 
    //Add Getters, setters, methods, constructors, etc.. 
} 

//SecC: 
public class SecC 
{ 
    [FindsBy(How = How.Id, Using = "Id")] 
    private IWebElement SecCField; 
    //Add Getters, setters, methods, constructors, etc.. 
} 

//Page 1: 

public class Page1 
{ 
    public SecA secA { get; set; } 
    public SecB secB { get; set; } 
    public SecC secC { get; set; } 

    //Add Getters, setters, methods, constructors, etc.. 
    public Page1() 
    { 
     secA = new SecA(); 
     secB = new SecB(); 
     secC = new SecC(); 
    } 
} 
+0

これはまさに私が探していたものです。どうもありがとう。 – Navin

0

通常のコードと同様に、継承を使用して作業することもできます。ヘッダーとフッターのコンポーネントを含む基本クラスを作成し、他のページオブジェクトにこれらのクラスを拡張させます。

public class BasePageObject 
{ 
    [FindsBy(How = How.Name, Using = "username")] 
    private IWebElement UsernameField; 
    [FindsBy(How = How.Name, Using = "password")] 
    private IWebElement PasswordField; 
    [FindsBy(How = How.Name, Using = "email")] 
    private IWebElement MailingListFormEmail; 

    public void Login() 
    { 
     // Login to the application 
    } 

    public void SubscribeToMailingList() 
    { 
     // Subscribe to the mailinglist 
    } 
} 

public class IndexPage : BasePageObject 
{ 
    // Your Concrete page here 
} 

私はあなたの質問を正しく理解していない場合、これが助けて欲しいと私に教えてください。

+2

お返事ありがとうございました。私が正しく覚えていれば、C#は多重継承をサポートしていないので、あなたの例のように2つのクラスを継承することはできません。 – Navin

+2

申し訳ありませんが、あなたは正しいです。多重継承はインタフェースでのみ可能です。他のオプションは、基本コンポーネントで1つのクラスを作成するためにヘッダーとフッターが常に同じである場合です。 – Thomas

+0

私はあなたが言っていることを理解しています。しかし、問題はヘッダーとフッターだけではないということです。私は他のセクションも繰り返していますが、すべてのページにはありません。私はこの数年前にルビーでやったことがありますが、今は紛失しています。 – Navin

2

セクションごとにページオブジェクトを作成し、必要なページにプロパティ/ゲッターメソッドとして定義する必要があります。

+0

例を教えてください。どのように私は "プロパティ/ゲッターメソッドとしてそれらを定義したいページを"行うのですか? – Navin

+0

上記の例では、セクションをプロパティーとして定義する方法について説明しています。 – OriBr

関連する問題