大家早上好,
这可能是星期一的忧郁的结果,但我不能把我的头围绕在这上面。我试图返回一个与我们传入的文本匹配的对象。
public Dictionary<IWebElement, ReadOnlyCollection<IWebElement>> Cells;
public IWebElement FindCellByText(string pText)
{
return Cells.Select(m => m.Value).Select(m => m.FirstOrDefault<IWebElement>(e=> e.Text == pText));
}错误:“System.Collections.Generic.IEnumerable”到“OpenQA.Selenium.IWebElement”。存在显式转换(是否缺少强制转换?)上面的代码试图获取一个单元格。单元格分为行(键)和值(单元格)。
循环遍历每一行,并检查每个单元格是否与文本匹配并返回。
任何帮助都是非常感谢的。
发布于 2020-01-27 18:41:18
我会做一些类似的事情:
return Cells.Select(row => row.Value)
.SelectMany(q => q)
.FirstOrDefault(item => item.Text.Equals(pText));Cells.Select(row => row.Value)部件投影一个ReadOnlyCollection对象集合(IEnumerable<IReadOnlyCollection<IWebElement>>);
然后,使用.SelectMany(q => q)将集合扁平化,从而将其转换为IEnumerable<IWebElement>。
接下来,应用.FirstOrDefault(item => item.Text.Equals(pText))查询提取满足条件的第一个元素(如果不存在则为null )。
我希望它能帮到你。
发布于 2020-01-27 18:09:06
您可以使用SelectMany而不是Select来获得预期的结果,如下所示:
public IWebElement FindCellByText(string pText)
{
return Cells.SelectMany(m => m.Value).FirstOrDefault(e => e.Text == pText);
}https://stackoverflow.com/questions/59936506
复制相似问题