如何使用Selenium Webdriver C#

时间:2016-11-08 03:12:29

标签: c# selenium-webdriver

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

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

如何选择&#39;选项2&#39;作为下拉列表中的选定值?

2 个答案:

答案 0 :(得分:2)

在Selenium中使用CSS选择器:

你可以通过CSS Selector找到第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>项是动态的,那么获取计数并循环并获取所有值。

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

按文字搜寻元素(值)

更简单的方法是通过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"

了解更多-Example code

答案 1 :(得分:0)

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

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

参考:

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