2015-05-08 6 views
-1

Мне нужна помощь, как я могу выбрать значение из выпадающего списка, я программирую на C# с Selenium, и я всегда получаю следующую ошибку:Как выбрать значение из выпадающего списка (Selenium C#)

Element should have been select but was 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> 
+0

HTML : <пролет класс = "Выбор2 скрытых доступный" роль = "статус" ария-жить = "вежливой">

***
*** –

+0

вы должны изменить ваш вопрос и введите код внутри этого. – ketan

+0

@NoamIgorVeronin Скрыты ли они? – Saifur

ответ

0

Проблема заключается в том, что выпадающее меню не является ниспадающим. Элемент Select может работать только с элементом html, как показано ниже.

работа вокруг было бы создать специальный метод, который удовлетворит структуру HTML у вас есть сейчас.

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

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

Прежде всего SelectElement могут быть использованы только с элементом с Select тега. Это класс div и SelectElement здесь не применяется.

Попробуйте найти элемент и просто выполняя щелчок следующим образом:

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

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

Спасибо за совет, но на самом деле он все еще не выбирает значение из DD, элемент, расположенный успешно, и раскрывающийся список открывается, но значение не выбрано. –

+0

Это то, что вы имеете в виду? –

+0

Какое значение вы имеете в виду? – Saifur

0

Если вы знаете текст DropDown, вы можете использовать метод SendKeys (строка текста) IWebElement

internal static void SelectDD() 
{ 
    IWebElement xxx= driver.FindElement(""); 
    xxx.SendKeys("Text Of The Dropdown"); 
} 
Смежные вопросы