2017-10-14 132 views
0

我是新來specflow C#這樣的道歉,如果我做了一些基本的編程錯誤。Specflow步驟定義失敗因不能設置空隱式類型變量

我有我的specflow包含以下操作的列表:

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

... 

    And I enter in correct email [email protected] for Email address field 

    And I enter in non matching email [email protected] for Confirm email address field 

... 

And I enter in matching email address [email protected] for Confirm email address field 

的步驟之間唯一的變化是: - 電子郵件(無效,匹配,不匹配) 的類型 - 電子郵件地址 - 他們輸入的文本欄

所以我認爲讓參數化他們,但我無法得到它的工作,所以我想要什麼是解決這個問題的正確方法的一些幫助。

都在我試圖找到一個元素通過它的定位器,並設置一個字符串類型的電子郵件文本代碼首先:

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

在步驟定義我有它設置如下:

[When(@"I enter in (.*) email (.*) for (.*) field")] 
    public void WhenIEnterInInvalidEmailForField(string emailType, string fieldText, By fieldElement) 
    { 
     var email = _payment.GetFieldAndEnterText(PaymentDetailsResponsiveElements.EmailAddressField); 
     var confirmEmail = _payment.GetFieldAndEnterText(PaymentDetailsResponsiveElements.ConfirmEmailAddressField); 

     if (fieldElement.Equals("Email Address")) 
     { 
      return email; 
     }else if (fieldElement.Equals("Confirm Email Address")) 
     { 
      return confirmEmail; 
     } 

      _payment.GetFieldAndEnterText(fieldElement, fieldText); 
    } 

你可以看到,我試圖通過三個不同的參數。第一個在代碼方面並不重要,只是我可以一次又一次地使用這個步驟定義。

第二個參數是其在specflow提到知道鍵入哪些電子郵件的電子郵件。

最後一個參數是基於地方如果申請是電子郵件或證實電子郵件領域的定位,它會試圖找到的元素。

然而,在步驟定義我收到的電子郵件和confirmemail變量錯誤,不能設置空隙隱含類型和返回是行不通的,因爲它是一個void類型。

解決此問題的正確方法是什麼?

+0

嘗試把單引號你周圍的參數(和調整您正則表達式)。因此,這將是「我的‘正確’電子郵件‘[email protected]’爲‘電子郵件地址’字段中輸入」和[當(@「我輸入‘(。*)’電子郵件‘(。*)’爲「(。*)」字段「) –

回答

0

您的代碼有幾個問題。你提到你是C#的新手,我會建議你花一些時間做一些C#編程教程,閱讀一些好書等。

GetFieldAndEnterText()void return ...這意味着它不會返回任何東西,但你將其歸還給WhenIEnterInInvalidEmailForField()中的emailconfirmEmail。這是錯誤的原因。如何解決這個問題還不清楚,因爲我不明白你的方法應該做什麼。請用文字描述你希望你的WhenIEnterInInvalidEmailForField()做什麼並返回,如果有的話。

GetFieldAndEnterText()需要兩個參數,但您只能通過emailconfirmEmail行中的一個。

您在ifelse if中比較By類和string類。

您在WhenIEnterInInvalidEmailForField()中使用return兩次,應該返回void

您傳遞string emailType,但從來沒有使用它。

+0

所以我想whenienterininvalidemailforfield()所要做的只是輸入(的SendKeys)爲元素的文本框中。所有的步驟簡單地在文本是根據有關一步 –

+0

的電子郵件地址,所以基本上鍵入相關字段(文本框)),您在通過相關文本 –

+0

你所描述的是'GetFieldAndEnterText('方法進入用於電子郵件或確認電子郵件字段的「By」定位器。爲什麼有另一種方法? – JeffC