我有一个显示乘客头衔的清单:
public List<string> GetPassengerNames()
{
List<string> titleList = new List<string>();
var passengerTitles = _driver.FindElements(PassengerDetailsElements.TitleField);
foreach (var passengerTitle in passengerTitles)
{
SelectElement passengerTitleSelected = new SelectElement(passengerTitle);
string passengerTitleText = passengerTitleSelected.SelectedOption.Text;
titleList.Add(passengerTitleText);
}
return titleList;
}
然后我将其添加到场景上下文中:
[When(@"all passenger details are captured")]
public void WhenAllPassengerDetailsAreCaptured()
{
var passengersList = _passengerDetails.GetPassengerNames();
ScenarioContext.Current.Add("PassengersList", passengersList);
}
当我抓住这个上下文但我不知道如何为列表元素执行此操作时,我想要抓住每位乘客的文本。
我尝试了以下内容:
string passengersList = ScenarioContext.Current["PassengersList"].ToString().Select(c => c.Text()).ToArray();
为了从列表中获取每个值的文本并存储在数组中,上面的代码应该是什么?
答案 0 :(得分:1)
你可以使用字符串连接。我没有在visual studio中检查过这个,但它应该可以工作。
var passengersList = string.Join(", ", _passengerDetails.GetPassengerNames());
答案 1 :(得分:0)
试试此代码
var resultString = string.Join(",", passengersList);
答案 2 :(得分:0)
用于将列表添加到会话的代码是正确的,如果要从会话中检索相同的代码,则意味着必须使用以下行,而不是保存为连接字符串,检索它们并拆分为得到价值。试试这个:
var passengerList = (List<string>)ScenarioContext.Current["PassengersList"];
// If you want them as a comma separated values then
string csvPassengerList = String.Join(",",passengerList);
请注意:[Reference]
会话变量可以是任何有效的.NET Framework类型。价值 会话变量返回时必须转换为适当的类型 你从SessionStateItemCollection中检索它。