2017-08-09 8 views
0

私は関連情報を得るためにインターネットで閲覧しましたが運はありません。サンプルコードは以下の通りである:Page Factoryデザインパターンでオブジェクトを返すユースケースは何ですか?

public class HomePage 
{ 
    @FindBy(id = "fname") 
    WebElement name; 

    @FindBy(id = "email") 
    WebElement email; 

    @FindBy(id = "password") 
    WebElement password; 

    @FindBy(id = "passwordConf") 
    WebElement confPassword; 

    public HomePage fillFormDetails(String firstname, String emailid) 
    { 
     name.sendKeys(firstname); 
     email.sendKeys(emailid); 

     return this; 
    } 

    public void fillPass(String pass) 
    { 
     password.sendKeys(pass); 

    } 
} 

私はfillFormDetails(String firstname, String emailid)メソッドを呼び出している間、我々はオブジェクトを返している理由を知りたいですか?

私たちはこれを使用してコードの効率を管理することができますか?

答えて

1

あなたが注意点として

HomePage homePage = new HomePage(); 
homePage 
    .fillFormDetails(firstName, email) 
    .fillPass(pass); 

の連鎖の方法は、私たちにしたい時に返されるオブジェクトは、代わりにそれらのいくつか

public HomePage fillFirstName(String firstName) 
{ 
    name.sendKeys(firstName); 

    return this; 
} 

public HomePage fillEmail(String email) 
{ 
    email.sendKeys(email); 

    return this; 
} 

public void fillPass(String pass) 
{ 
    password.sendKeys(pass); 
} 
だけで、より良い設計を分離する方法にすべてのアクションを分割することです、使用されています

とテスト

HomePage homePage = new HomePage(); 
homePage 
    .fillFirstName(firstName) 
    .fillEmail(email) 
    .fillPass(pass); 
+0

回答ありがとうございます – NarendraR

1

にこれはメソッドチェーンと呼ばれています。 こちら。 https://en.wikipedia.org/wiki/Method_chaining#Java

ユーザー名を入力してパスワードを入力し、最後にフォームを送信する3つの方法があるとします。

通常、ページのオブジェクトを作成し、オブジェクトを使用してそれらを個別に呼び出すことになります。このような何か、

MethodChaining methodChaining = new MethodChaining(); 
methodChaining.fillUserName("username"); 
methodChaining.fillPassword("password"); 
methodChaining.submit(); 

しかし、あなたが道を次のメソッドをチェーンできthisあなたが同じクラスのオブジェクトを返します。

時にはそれは便利で、オートメーションやないが、完全に人とアプリケーションの動作わたしであることを使用するには良い:)

public class MethodChaining { 

    public MethodChaining fillUserName(String username){ 
     return this; 
    } 

    public MethodChaining fillPassword(String password){ 
     return this; 
    } 

    public MethodChaining submit(){ 
     return this; 
    } 

    public static void main(String args[]){ 
     MethodChaining methodChaining = new MethodChaining(); 
     methodChaining.fillUserName("abc") 
       .fillPassword("pass") 
       .submit(); 
    } 
} 

天候に見えます。

厳密な単一フローがある場合は、複数のフローが処理するのが難しいです。これは良いかもしれない。

複数フローの場合。このフォームを提出すると、ログインしたか、エラーを示す同じページにとどまっているとします。これを行うには、Submitでこれを処理しなければならないロジックがいくつかあります。これはいつか複雑になり、あなたがそれを維持しなければならないときに問題を引き起こします。

+0

ありがとうございました – NarendraR

関連する問題