Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从下拉列表中选择值(Selenium C)_C#_Html_Select_Selenium_Elements - Fatal编程技术网

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

C# 如何从下拉列表中选择值(Selenium C),c#,html,select,selenium,elements,C#,Html,Select,Selenium,Elements,我需要帮助,如何从下拉列表中选择一个值,我正在使用Selenium在C上编程,我总是遇到以下错误: 元素应已被选中,但未被选中 我的代码是: 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]/d

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

元素应已被选中,但未被选中

我的代码是:

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>

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

解决方法是创建一个自定义方法,该方法将适合您现在的html结构

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

foreach(var span in spans)
{
   if(span.Text == "some")
     span.Click();
}
首先,SelectElement只能与带有Select标记的元素一起使用。这是一个div,SelectElement类在此不适用

尝试查找元素并按如下方式执行单击:

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

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

如果知道下拉列表的文本,可以使用IWebElement的SendKeysstring文本方法

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

HTML:您必须编辑您的问题,并将代码放入其中。@NoamIgorVeronin这些是隐藏的吗?Select2以隐藏基础select的方式设置下拉列表的样式。你的方法到底为什么是一个内部静态方法?是的,建议有Hiddenthank,但实际上它仍然没有从DD中选择值,元素成功定位,下拉列表打开,但值没有选择。这就是你的意思?你在说什么值?我是说当我运行测试时,我可以打开下拉列表,但没有从该下拉列表中选择任何值带有select2 drop的div是您要选择的吗?