C#Selenium:如何计算元素并从选择元素中获取选定的选项

时间:2016-04-11 01:12:00

标签: c# selenium

我正在使用C# - Selenium Webdriver

我需要测试一个页面,其中选择元素的数量是未知的。它可能是一,二......在下面的例子中,它包含4个选项。

这里有两个问题。

  1. 如何计算选择标记的数量,以便我可以循环获取每个选择标记中的选定选项。

  2. 使用Selenium WebDriver C#获取所选文本的正确语法是什么?

  3. 谢谢。

    <select name="ps_ck$0" id="ps_ck$0" >
        <option value="A">Active</option>
        <option value="C">Cancelled</option>
    </select>
    
    <select name="ps_ck$1" id="ps_ck$1" >
        <option value="A">Active</option>
        <option value="X">Cancelled</option>
    </select>
    
    <select name="ps_ck$2" id="ps_ck$2" >
        <option value="A">Active</option>
        <option value="X">Cancelled</option>
    </select>
    
    <select name="ps_ck$3" id="ps_ck$3" >
        <option value="A">Active</option>
        <option value="X">Cancelled</option>
    </select>
    

2 个答案:

答案 0 :(得分:2)

您可以使用FindElements()方法,并按标记名称查找所有select元素。对于找到的每个select元素,初始化SelectElement类实例并获取SelectedOption property的值:

IList<IWebElement> selectElements = driver.FindElements(By.TagName("select"));

foreach (IWebElement select in selectElements)
{
    var selectElement = new SelectElement(select);
    Console.WriteLine(selectElement.SelectedOption.Text);
}

请注意,在找到select元素时我们可以更具体,并使用 CSS选择器检查name属性以ps_ck开头:

IList<IWebElement> selectElements = driver.FindElements(By.CssSelector("select[name^=ps_ck]"));

答案 1 :(得分:0)

Selenium WebDriver C#代码:

SelectElement SelectEmployeeName = new SelectElement(driver.FindElement(By.Id("ps_ck$0")));
//To count elements
IList<IWebElement> ElementCount = SelectEmployeeName.Options;
int NumberOfItems = ElementCount.Count;
Console.WriteLine("Size of BGL: " + NumberOfItems);
//Getting drop down values
for(int i = 0; i < NumberOfItems; i++)
{
String DropDownItems = ElementCount.ElementAt(i).Text;
Console.WriteLine(DropDownItems);
}

// Or Loop可以写成

foreach (IWebElement i in ElementCount)
{
String DropDownItems = i.Text;
Console.WriteLine(DropDownItems);
}