从循环selenium中下拉选择元素

时间:2015-08-26 08:23:40

标签: c# selenium drop-down-menu selenium-webdriver

我从下拉列表中获取所有选项,但我无法选择它们,也许有人可以帮助我,如何从循环中的下拉列表中选择每个值:

<select id="1234" class="dropdown">
    <option value="3">HelloWorld</option>
    <option selected="selected" value="1">GoodBye</option>
    <option value="2">Name</option>
    <option value="5">Surname</option>
</select>

我的代码:

var elements = WebDriver.FindElement(By.Id("1234")).FindElements(By.TagName("option"));
for (var i = 0; i < elements.Count; i++){
    elements[i].Click();
}

不会出现错误,只是不从下拉列表中选择值

2 个答案:

答案 0 :(得分:2)

这是执行此操作的正确方法

SelectElement dropdown = new SelectElement(driver.FindElement(By.Id("1234")));
foreach (IWebElement option in dropdown.Options)
{
    // you may need a slight delay here to give the page a chance to respond and make the change
    option.Click();
}

答案 1 :(得分:1)

  1. 首先,请你确定没有其他的 ID为“1234”的元素? Selenium FindElement By.Id会 总能找到符合条件的第一个元素。
  2. 其次,你能不能试着介绍一下等待 选择下拉菜单并选择其项目,您可能需要 打破你的

    var elements = WebDriver.FindElement(By.Id(“1234”))。FindElements(By.TagName(“option”));

    分成两步,等待中间。有时,您的点击命令太快,下拉菜单无法显示其下拉菜单。

  3. 出于诊断目的,您可以使用element.getAttribute('one element')查找下拉菜单选项的属性值,以确保您真正找到它们。

  4. 此下拉列表是否属于iframe?但是你说过没有错误所以它可能不属于iframe。