【问题标题】:How to select a list item from a drop down by its value using Selenium Webdriver C#如何使用 Selenium Webdriver C#按其值从下拉列表中选择列表项
【发布时间】:2016-11-08 03:12:29
【问题描述】:

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

<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”作为选定值?

【问题讨论】:

  • 这是一个 ul 样式看起来像一个下拉列表?还是您的意思是使用实际的 select 元素?
  • 这是一个ul 元素,样式看起来像一个下拉菜单。

标签: c# selenium-webdriver


【解决方案1】:

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

如果&lt;li&gt; 项目是动态的,则获取计数并循环并获取所有值。

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

【讨论】:

  • 谢谢。第一个选项对我来说已经足够了。
  • 略有改动。 driver.FindElement(By.CssSelector("ul.rcbList > li:nth-child(1)")).Click(); (我必须指定ulelement 的类名)
  • 我可以遵循一种语法来按其值选择列表项吗?列表项包含“选项 2”
  • 谢谢。您的代码似乎是正确的。所以,我会把它标记为答案。但是,我正在使用的系统自动化起来有点复杂。还是谢谢。
  • 对于复杂系统:1. 获得完整的领域知识(不是语法知识) 2. python 用于报废 3. R 语言用于报废。
【解决方案2】:

尝试(仅当ul 被视为下拉菜单时):

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

参考:

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

【讨论】:

  • 对不起。不适用于这种情况。 SelectElement 只能用于选择选项 HTML 元素,不能用于无序列表项。
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
相关资源
最近更新 更多