2

我試圖從一個下拉列表中選擇一個選項,直到定位器被點擊後纔會填充。這是我在Firebug中看到:從div class dropdown中選擇 - Selenium

div class="selectize-input items not-full has-options"> 
<input type="text" autocomplete="off" tabindex="" placeholder="523-23-XXXXX" style="width: 109px; opacity: 1; position: relative; left: 0px;"> 
</div> 
<div class="selectize-dropdown multi form-control" style="display: none; width: 263px; top: 34px; left: 0px; visibility: visible;"> 
<div class="selectize-dropdown-content"> 
<div class="option" data-selectable="" data-value="523-23-20273">523-23-20273</div> 
<div class="option" data-selectable="" data-value="523-23-20274">523-23-20274</div> 
<div class="option" data-selectable="" data-value="523-23-20275">523-23-20275</div> 
<div class="option" data-selectable="" data-value="523-23-20276">523-23-20276</div> 
<div class="option" data-selectable="" data-value="523-23-20280">523-23-20280</div> 
<div class="option" data-selectable="" data-value="523-23-202801">523-23-202801</div> 

我到目前爲止的代碼是:

public void selectAgentCodes(String agentCode) 
    { 
     driver.findElement(byAgentCodes).click(); 
     new WebDriverWait(driver, 5).until(ExpectedConditions.visibilityOfElementLocated(By.className("selectize-dropdown-content"))); 
     Select select = new Select(driver.findElement(By.className("selectize-dropwodn-content"))); 
     select.selectByVisibleText(agentCode); 
    } 

我得到一個UnexpectedTagNameException:元素應該是「選擇」,但被「格」。我不知道如何處理這個問題,因爲我以前只使用過選擇。

假設我想爲代理程序代碼選擇「523-23-20275」。我將如何去做這件事?

任何幫助表示讚賞!謝謝。

回答

2

這不是一個正常的下拉選擇菜單。因此,在這種情況下使用Select將不起作用。沒有看到完整的網站,我不知道選擇它究竟需要做些什麼。

但只要在下拉列表中的選項可見時單擊div元素即可。

//I'm assuming that this will display the dropdown list 
driver.findElement(byAgentCodes).click(); 

driver.findElement(By.xpath("//div[@data-value='523-23-20275']")); 
+0

謝謝!這工作 – NewCoder888

0

這裏,如果沒有在UI無選擇標記選擇類是行不通的,你需要點擊主格,然後你需要點擊任何的div有多個選項,它將首先點擊下拉列表,然後點擊列表中的特定元素, 下面的代碼將有望爲您工作......

1)首先,您需要點擊這個div,找到它通過任何可用的方法如id,xpath,css selector, driver.findElement(byAgentCodes).click(); 單擊該按鈕將打開一個下拉列表

2)重複相同的上述第1點的點擊下拉

523-23-20275

,將工作在任何的列表項。