如何使用Selenium Webdriver c#从下拉列表中选择列表项的值

本文关键字:列表 选择 下拉列表 Selenium 何使用 Webdriver | 更新日期: 2023-09-27 18:16:56

我想选择一个下拉值。问题是下拉列表是派生的,它被写成列表项。代码片段如下:

<div class="rcbScroll" style="width: 100%; height: 184px; overflow: auto;">
<ul class="rcbList" style="width: 100%">
    <li class="rcbItem">Option 1</li>
    <li class="rcbItem">Option 2</li>
    <li class="rcbItem">Option 3</li>
</ul>

我如何选择'选项2'作为下拉菜单中的选定值?

如何使用Selenium Webdriver c#从下拉列表中选择列表项的值

在Selenium中使用CSS选择器

你可以通过CSS选择器找到第n个子元素的值。

// first child: will return "Option 1"
driver.findElement(By.cssSelector("ul.rcbList > li:nth-child(1)"));
// second child: will return "Option 2"
driver.findElement(By.cssSelector("ul.rcbList > li:nth-child(2)"));
// nth child: will return "Option n"
driver.findElement(By.cssSelector("ul.rcbList > li:nth-child(n)"));

如果<li>项是动态的,则获取count并循环并获取所有值。

var el_count = driver.FindElements(By.CssSelector("ul.rcbList"));
for(int index=0; index < el_count.count(); index++){
   // 0 (zero) is the first element in <ul> DOM Array
   driver.findElement(By.cssSelector("ul > li:nth-child(index)"));
}

通过Text (value)查找元素

更简单的方法是通过xPath和Class 找到

var title = driver.FindElement(By.XPath("./div[@class='aCont']/div/a/span[text() = 'TextToFind']"));
// now title contains text, title = "text to be find"

查看更多-示例代码

try(仅当ul被视为下拉列表时):

SelectElement selectElement = new SelectElement(driver.FindElement(By.cssSelector(".rcbList")));
selectElement.SelectByText("Option 2");
参考:

https://stackoverflow.com/a/31072586/2575259