如何使用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中使用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