2017-03-24 67 views
-1

我想從選擇按鈕中獲取所有選項。無法在下拉菜單中獲得擴展選項

<select id="filterSel" name="filterSel" class="fixed-size" onchange="fnLoadAccountslegEnt(this.value); " onclick="closeDropDown();" size="1" style="top: 6.5px; margin: 0px; width: 58%; height: 30px; z-index: 9999; background: rgb(255, 255, 255);">         
    <option value=""></option> 
    <option value="aa" title="abcd">abcd</option> 
    <option value="bb" title="xyz">xyz</option> 
    <option value="More" style="color: blue;">More...</option> 
</select> 

第3個選項是「更多...」按下這個更多的選項加載到下拉菜單中。即現在只有更多選項可見。我需要使用硒WebDriver訪問所有選項。使用下面的代碼,我只能得到options標籤中已經存在的內容,以便在控制檯上打印......最後打印的選項是「更多...」。 我的代碼:

Select select=new Select(element_select); 

List<WebElement> options = select.getOptions(); 
int i=1; 
for(WebElement ele:options) { 
    if(str.contains("More")) { 
     Filter.FilterApplied().sendKeys(str); 
     Filter.FilterApplied().click(); 
    } 
    str=ele.getText(); 
    System.out.println("options are :"+str); 
    i++; 
}  

錯誤消息:

FAILED: main org.openqa.selenium.WebDriverException: unknown error: Element ... is not clickable at point (262, 84). Other element would receive the click:

+0

如果其他選項只在單擊「更多」後才加載到文檔中,則必須讓您的硒先執行該操作,然後獲取選項。 –

+0

這是一個在這種情況下的問題。它是一個選擇框,也是一個文本框。當我給element_select.click();它拋出一個錯誤,說選擇框不可點擊,而是文本框被點擊。 – aswathy

+0

我的意思是它的多用途......它可以是一個下拉或搜索框都在同一位置 – aswathy

回答

0

你可以使用JSTL for循環動態填充下拉。 1.向 <option value="More" onclick="//goToSomeController" style="color: blue;"><%= //could be an array of options %></option>

添加一個動作,然後從那裏您可以填充循環的大小和帶有選項的數組。希望有所幫助。

+0

無法編輯網頁..我開發一個使用硒的測試用例 – aswathy

0

可以使用Select類選擇more選項,並加載所有的選項

Select select = new Select(element_select); 
List<WebElement> options = select.getOptions(); 
int size = options.size(); 

select.selectByValue("More");  
while ((options = select.getOptions()).size() == size); 

int i = 1; 
for(WebElement ele : options) 
{ 
    str = ele.getText(); 
    System.out.println("options are :"+str); 
    i++; 
} 

while ((options = select.getOptions()).size() == size);將等待更多的選擇來加載,使用這種方式只有當你確定有更多的選擇來否則你會以無限循環結束。