我有一个包含主题的下拉列表。
我做了什么,我使用下面的代码来获取该下拉列表中的值。
IList<IWebElement> allOptions = check.Options;
然后我声明一个字符串,它将处理我必须验证的所有值,以确定该下拉列表中是否存在这些值。
string[] subject = "Math", "Science", "History", "Calculus", etc...
我循环它们以获取有多少主题我必须检查它们是否存在于下拉列表中,然后使用Contains进行验证。
if (allOptions.Contains(subject[i]))
{
exist = true;
}
但是,我收到的错误无法将字符串转换为OpenQA.Selenium.IWebElement。
任何人都知道如何修复它?
谢谢。
答案 0 :(得分:3)
您可以使用LINQ。基本上这段代码:
if (allOptions.Contains(subject[i]))
{
exist = true;
}
可以用一行代替:
exist = allOptions.Any(x => x.Text == subject[i]);
基本上,此代码只检查allOptions
列表中的任何元素是否Text
与subject[i]
匹配。如果为true,exist
现在为true
,如果为exist
现为false
。
答案 1 :(得分:1)
确实,你不能直接这样做。 IWebElement
包含名为string
的{{1}}属性,您需要对其进行过滤。像这样:
Text
如果您只需要查明var foundSubjects = allOptions.Where(o => subject.Contains(o.Text));
数组中是否找到所有选项,请执行以下操作:
subject
或者,您可以使用var optionsAreValid = allOptions.All(o => subject.Contains(o.Text));
来确定Any
数组中是否至少存在一个选项:
subject
答案 2 :(得分:0)
使用Text property
的{{1}}。它可能适合你
答案 3 :(得分:0)
尝试循环遍历IList<IWebElement>
:
int subjectCount = 0;
foreach (IWebElement element in allOptions)
{
if (subject.Contains(element.Text))
{
subjectCount++;
}
}