2015-05-08 48 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 :

*** ***

+0

你必須編輯您的問題並把代碼放在裏面。 – ketan

+0

@NoamIgorVeronin那些隱藏的? – Saifur

回答

0

問題是下拉不實際是一個下拉菜單。選擇元素只能在下面的html中使用元素。

一個解決是創建將適合你現在的HTML結構的自定義方法。

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

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

所有SelectElement首先只能與Select標籤的元件使用。這是divSelectElement類不適用於此處。

嘗試尋找元素,只是執行點擊如下:

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

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

感謝您的建議,但實際上它仍然不會從DD中選擇值,成功定位元素並打開下拉列表,但未選擇該值。 –

+0

這是你的意思嗎? –

+0

你在說什麼價值? – Saifur

0

如果你知道下拉的文本,你可以使用IWebElement

的方法的SendKeys(字符串文本)
internal static void SelectDD() 
{ 
    IWebElement xxx= driver.FindElement(""); 
    xxx.SendKeys("Text Of The Dropdown"); 
} 
相關問題