C# 从循环中的下拉列表中选择元素

C# 从循环中的下拉列表中选择元素,c#,selenium,drop-down-menu,selenium-webdriver,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">Nam

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

<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();
}
没有出现错误,只是没有从下拉列表中选择值

首先,你能确定没有其他的吗 id为1234的元素?Selenium FindElement By.Id将 始终找到符合条件的第一个元素。 第二,你能不能试着介绍一下中间的等待时间 选择下拉菜单并选择其项,您可能需要 打破僵局

var elements=WebDriver.FindElementBy.Id1234.FindElementsBy.tagnamepoption

分为两个步骤,并在两个步骤之间放置一个等待。有时,您的单击命令太快,下拉菜单无法显示其下拉菜单

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

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


这是正确的方法

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

您必须先点击下拉列表吗?谢谢您添加等待时间帮助我