2015-06-22 67 views
2

我在Selenium WebDriver的Java上編寫腳本,並且從下拉菜單中選擇了一個問題。WebDriver無法獲取下拉菜單元素(Java)

這裏是我的定位:

new Select(driver.findElement(By.id("FormElement_select_68_input_input"))).selectByVisibleText("Image"); 

這裏有一個錯誤:http://prntscr.com/7jul03

這裏的HTML代碼:http://prntscr.com/7jvou6 需要從這個菜單中選擇 「圖像」,但有一個錯誤。

在我有這樣的錯誤之前,我無法上傳文件,這是因爲我需要切換到幀(0)。 但在這裏,我不知道爲什麼我不能從DropBox中選擇菜單「圖像」。

+0

並不是每一個下拉菜單是選擇元素,如果下拉被使用div和列表實現的,不能使用,因此選擇類。 – Manu

回答

1

你的ID是動態的,所以你不能使用它。選擇不會工作你的情況,你只需要使用兩個點擊

WebElement dropdown = driver.findElement(By.xpath("//div[@class='select-pad-wrapper AttributePlugin']/input")); 
dropdown.click(); 
WebElement element = driver.findElement(By.xpath("//div[@class='select-pad-wrapper AttributePlugin']/div/ul/li[text()='Image']")); 
element.click(); 
0

它看起來像你要找的元素ID「FormElement_select_68_input_input」不存在於你的HTML中,你的代碼示例顯示「FormElement_select_283_input_container」作爲選擇框元素。試試這個:

Select droplist = new Select(driver.findElement(By.Id("FormElement_select_283_input_container"))); 
droplist.selectByVisibleText("image"); 
+0

nope,沒有幫助 –

0

因爲它不是選擇標籤。

嘗試用下面的邏輯

WebElement div = driver.findElement(By.cssSelector("div[id*='FormElement_'] > div > div")); 
div.click(); 
WebElement li = div.findElement(By.xpath(".//ul/li[text()='Image']")); 
li.click(); 
+0

是的,你是對的,這是我的錯,它不是選擇器標籤。但stil出現錯誤:http://prntscr.com/7jwo9i –

+0

以前有拼寫錯誤。我已經更新了我的答案。 (替換id值爲'FormElement_select_683_input_input') – Santoshsarma

+0

同樣的錯誤:http://prntscr.com/7jx05q 找不到元素 –

0

按HTML代碼屏幕,我期待選擇類(selectByVisibleText等)不工作。你可以做一件事,直接點擊所需的選項。 (可以點擊「// div [@ class ='selectbox-wrapper']/ul/li [@ class ='selectbox_li'] [contains(text(),'Image')]」,檢查一個是否正確或不在firepath)

讓我知道結果..如果它不工作,如上所述,你需要點擊該輸入下拉框,並需要點擊該圖像。

謝謝你, 穆拉利

+0

thx,但德米特里已經提出了工作解決方案,並且我標記了=) –

相關問題