2017-11-06 7 views
1

私はすべての乗客のリストを保管しています。方法とステップの定義は以下の通りです。乗客のリストをチェックする方法はドロップダウンオプションで表示されますか?

interactions.cs

public List<string> GetPassengerNames() 
    { 
     List<string> titleList = new List<string>(); 
     List<string> forenameList = new List<string>(); 
     List<string> surnameList = new List<string>(); 

     var passengerTitles = _driver.FindElements(PassengerDetailsElements.TitleField); 
     var passengerForenames =_driver.FindElements(PassengerDetailsElements.ForenameField); 
     var passengerSurnames = _driver.FindElements(PassengerDetailsElements.SurnameField); 

     foreach (var passengerTitle in passengerTitles) 
     { 
      SelectElement passengerTitleSelected = new SelectElement(passengerTitle); 
      string passengerTitleText = passengerTitleSelected.SelectedOption.Text; 
      titleList.Add(passengerTitleText); 

     } 
     foreach (var passengerForename in passengerForenames) 
     { 
      forenameList.Add(passengerForename.GetAttribute("value")); 
     } 
     foreach (var passengerSurname in passengerSurnames) 
     { 
      surnameList.Add(passengerSurname.GetAttribute("value")); 
     } 

     List<string> fullNameList = titleList 
      .Zip(forenameList.Zip(surnameList, (firstname, lastname) => firstname + " " + lastname), 
       (firstname, lastname) => firstname + " " + lastname).ToList(); 

     return fullNameList; 
    } 

stepdefinition.cs

[When(@"all passenger details are captured")] 
    public void WhenAllPassengerDetailsAreCaptured() 
    { 
     var passengersList = _passengerDetails.GetPassengerNames(); 
     ScenarioContext.Current.Add("PassengersList", passengersList); 
    } 

これが私に与え、次の乗客:別のspecflowステップで今すぐ

Mr Test Tester 
Mr Testering Tester 

は、ステップからその名前を主張します上記のhtmlが以下の予約連絡先ドロップダウンオプションと一致する:

<select name="booking-contact" id="booking-contact" class="js-booking-contact-select has-value" data-vv-id="_dv78hd1js" aria-required="true" aria-invalid="false"><option disabled="disabled" hidden="hidden" value="">Choose from list</option> <option value="1">Mr Test Tester</option> <option value="2">Mrs Testering Tester</option> <option value="other">Someone else</option></select> 
<option disabled="disabled" hidden="hidden" value="">Choose from list</option> 
<option value="1">Mr Test Tester</option> 
<option value="2">Mrs Testering Tester</option> 
<option value="other">Someone else</option> 
</select> 

上記の2つの旅客名が予約連絡先のドロップダウンに表示され、最初のオプション 'Choose from list'と他の誰かが表示されることを確認する方法を知りたいと思います。

これを行うにはどうすればよいですか?

ここに入りますアサートを実行する必要があるステップ定義ステップ:

[Then(@"the booking contact drop down displays the correct passengers")] 
public void ThenTheBookingContactDropDownDisplaysTheCorrectPassengers() 
{ 

    var passengers = ScenarioContext.Current["PassengersList"].ToString().ToCharArray().Select(c => c.ToString()).ToList(); 
} 

答えて

0

はまた、追加

fullNameList.Insert(0, item); 

のようなあなたの完全な名前のリストの先頭に「リストから選択し、」追加」 (最後のドロップダウンオプションを考慮して)

fullNameList.add("Someone else"); 

今すぐあなたはvaリッドドロップダウン値:

IWebElement comboBox = new WebDriverWait(_browserWindow, TimeSpan.FromSeconds(30)).Until(d => _browserWindow.FindElement(By.Id(id))); 
        SelectElement dropdownList = new SelectElement(comboBox); 
        int j = 0; 
        for (int i = 0; i < fullNameList.Length; i++) 
        {        
         if (dropdownList.Options[i].Text == passengersList[j]) 
         { 
          j++; 
          Console.WriteLine("Value Matched"); 
         } 
         else 
         { 
          throw new Exception("Data not found"); 
         } 
        } 
関連する問題