繁体   English   中英

如何从下拉列表中选择值(Selenium C#)

[英]How to select value from the drop down list (Selenium C#)

我需要帮助,如何从下拉列表中选择一个值,我正在使用SeleniumC#上编程,并且总是收到以下错误:

元素应已选择但为span

我的代码是:

internal static void SelectDD()
{
    SelectElement xxx= new SelectElement(driver.FindElement(By.XPath("/html/body/div[1]/section/div[1]/div[2]/section/div/section/div[2]/div[2]/div/div[2]/div[1]/div/div[2]/div/div/a/span[1]")));

    xxx.SelectByIndex(1);
}

HTML:

<span class="select2-hidden-accessible" role="status" aria-live="polite"></span> <span class="select2-hidden-accessible" role="status" aria-live="polite"></span> <span class="select2-hidden-accessible" role="status" aria-live="polite"></span> 
<div id="select2-drop-mask" class="select2-drop-mask" style="display: block;"></div>
<div id="select2-drop" class="select2-drop select2-display-none select2-drop-auto-width select2-drop-active select2-drop-above" style="left: 361.583px; top: 472.1px; bottom: auto; display: block; width: 262px;"></div>
</body>

首先, SelectElement只能与带有Select标签的元素一起使用。 这是一个div并且SelectElement类不适用于此处。

尝试查找元素,然后按如下所示单击:

IWebElement element = driver.FindElement(By.Id("select2-drop"));

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].click();", element);

问题是下拉列表实际上不是下拉列表。 选择元素只能与html一起使用,如下所示。

解决方法是创建一个适合您现在使用的html结构的自定义方法。

var spans = driver.FindElements({selector});

foreach(var span in spans)
{
   if(span.Text == "some")
     span.Click();
}

如果您知道DropDown的文本,则可以使用IWebElement的SendKeys(string text)方法

internal static void SelectDD()
{
     IWebElement xxx= driver.FindElement("");
     xxx.SendKeys("Text Of The Dropdown");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM