2017-10-14 1 views
0

By 문을 사용하여 다중 로케이터 사용과 관련하여 질문이 있습니다.단계 정의에서 로케이터 선택을 적용하는 방법

나는 그것이 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

왜 그런 종류의 세부 사항에 들어가나요? 하나 또는 두 단계를 생성 할 수 있습니다. 주소 입력란에 유효하지 않은 이메일을 입력했을 때 잘못된 Confirm 이메일 주소를 입력하거나 [email protected] 주소를 입력하고 [email protected] 이메일 주소를 입력하면 불일치 오류가 표시됩니다. 그런 다음 문자열 필드를 기반으로 두 항목을 수행합니다. – 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; 
     } 
    } 
관련 문제