我正在努力找到一种方法,以便能够从输入栏捕获乘客文本,然后使用它来检查它是否在下拉菜单中。
以下是我目前关于检索乘客姓名的想法。每位乘客都有自己的名字和姓氏字段:
在页面互动页面中:
public List<string> GetPassengerNames(By passengerNameType)
{
List<string> myList = new List<string>();
var myFields = _driver.FindElements(passengerNameType);
foreach (var myField in myFields)
{
myList.Add(myField.Text);
}
return myList;
}
步骤定义中的:
public void ThisIsMyForenameTestStepMethod()
{
List<string> myList = GetPassengerNames(PassengerDetailsElements.ForenameField);
ScenarioContext.Current.Add("ForeNameList", myList);
}
public void ThisIsMySurnameTestStepMethod()
{
List<string> myList = GetPassengerNames(PassengerDetailsElements.SurnameField);
ScenarioContext.Current.Add("SurnameList", myList);
}
我想知道下一步要说实话。我需要选择一个下拉菜单,并确保下拉列表中的选项与乘客的详细信息相符,但同时,我需要确保每位乘客的姓名和姓氏都是正确的。它就像我需要能够在检索到它们的第一个和姓氏之后正确地连接这些名称但不确定如何解决这个问题?
答案 0 :(得分:1)
你可以连接firstname&amp;新名单中的姓氏列表为:
List<String> newList = new ArrayList<String>();
newList.addAll(listOne);
newList.addAll(listTwo);
然后验证下拉值与newList值匹配。如果值匹配,那么验证成功。
要验证下拉菜单,您可以使用以下代码:
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 < newList.Length; i++)
{
if (dropdownList.Options[i].Text == "")
{
continue; //if drop down contain 1st value as blank
}
if (dropdownList.Options[i].Text == newList[j])
{
j++;
Console.WriteLine("Value Matched");
}
else
{
throw new Exception("Data not found");
}
}
您可以根据需要更改上述代码