2017-10-14 9 views
0

Byステートメントを使用して複数のロケータを使用することに関する質問があります。ステップ定義でロケータの選択を適用する方法

私はそれが句によって基づいてフィールドに入力するコードの私の作品を持っている下:私が使用するロケータを決定する方法を考え出すのに苦労しています私のステップの定義では

public void GetFieldAndEnterText(By fieldElement, string fieldText) => 
     _driver.FindElement(fieldElement).SendKeys(fieldText); 

specflowステップで述べられているフィールドに基づいています。

:フィールドには、確認のメールアドレスである場合

_payment.GetFieldAndEnterText(PaymentDetailsResponsiveElements.EmailAddressField); 

When I enter in invalid email Test.TestEmail.plc for Email address field 
    And I enter in invalid email Test.TestEmail.gmail.com for Confirm email address field 

は、私は事実上のフィールドは、電子メールアドレスは、このロケータを使用している場合はそれになりたい:

私はこれらの手順を持っています
_payment.GetFieldAndEnterText(PaymentDetailsResponsiveElements.ConfirmEmailAddressField); 

これを私の下のステップ定義にどのように適用できますか?

[When(@"I enter in invalid email (.*) for (.*) field")] 
    public void WhenIEnterInInvalidEmailForField(string fieldText, By fieldElement) 
    { 
      _payment.GetFieldAndEnterText(fieldElement, fieldText); 
    } 
+0

なぜこのような詳細に入りますか? 1つまたは2つのステップを作成できます。アドレス欄に無効な電子メールを入力したとき無効なConfirm電子メールアドレスを入力したとき、またはアドレス[email protected]を入力して電子メールアドレス[email protected]を確認すると、不一致エラーが発生します。次に、文字列フィールドに基づいて2つのエントリを行います。 – Dazed

答えて

1

このようなこともできます。私はシナリオの概要を使用しましたが、あなたはそれを行うことができませんでした。

Given on the <Field> I enter <Value> 
And I click the sign in button 
Then I can validate the <ErrorMessage> is thrown for <Field> 

     Examples: 
     | Field | Value | ErrorMessage|              
     | email | N/A | Email is required. |             
     | password | N/A | Password is required| 

    [Given(@"on the (.*) I enter (.*)")] 
    public void GivenOnTheEmailIEnterNA(string field, string value) 
    { 
     switch (field.ToLower()) 
     { 
      case "email": 
       CallYourElement.TypeEmail(value.ToLower() == "n/a" ? "" : value); 
       break; 
      case "password": 
       CallYourElement.TypePassword(value.ToLower() == "n/a" ? "" : value); 
       break; 
     } 
    } 


    [Then(@"I can validate the (.*) is thrown for (.*)")] 
    public void ThenICanValidateTheEmailIsRequired_IsThrownForEmail(string expectedError, string field) 
    { 
     switch (field.ToLower()) 
     { 
      case "email": 
      { 
       var receivedError = CallYourElement.GetEmailRequiredError(); 

       Assert.AreEqual(expectedError, receivedError); 
      } 
       break; 

      case "password": 
      { 
       var receivedError2 = CallYourElement.GetEmailPasswordRequiredError(); 

        Assert.AreEqual(expectedError, receivedError2); 

      } 
       break; 
     } 
    } 
関連する問題