C#Selenium:如何计算元素数量并从选择元素中获取所选选项

本文关键字:元素 选择 获取 选项 何计算 计算 C#Selenium | 更新日期: 2024-07-27 03:40:24

我正在使用C#-Selenium Webdriver

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

这里有两个问题。

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

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

谢谢。

<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>

C#Selenium:如何计算元素数量并从选择元素中获取所选选项

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

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]"));

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);
}

//或者循环可以写成

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