检查下拉列表中是否存在该值

时间:2017-08-31 18:57:58

标签: c# selenium selenium-webdriver

我有一个包含主题的下拉列表。

我做了什么,我使用下面的代码来获取该下拉列表中的值。

IList<IWebElement> allOptions = check.Options;

然后我声明一个字符串,它将处理我必须验证的所有值,以确定该下拉列表中是否存在这些值。

string[] subject = "Math", "Science", "History", "Calculus", etc...

我循环它们以获取有多少主题我必须检查它们是否存在于下拉列表中,然后使用Contains进行验证。

if (allOptions.Contains(subject[i]))
                {
                    exist = true;
                }

但是,我收到的错误无法将字符串转换为OpenQA.Selenium.IWebElement。

任何人都知道如何修复它?

谢谢。

4 个答案:

答案 0 :(得分:3)

您可以使用LINQ。基本上这段代码:

if (allOptions.Contains(subject[i]))
{
    exist = true;
}

可以用一行代替:

exist = allOptions.Any(x => x.Text == subject[i]);

基本上,此代码只检查allOptions列表中的任何元素是否Textsubject[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++;
    }
}