2012-09-10 42 views
3

我想從隱藏選擇中獲取所有選項。 選擇「顯示:無;」所以我遇到了一個問題。Selenium WebDriver - 從隱藏選擇中獲取選項

<select name="fw3k_ad_input_et_type_group" 
      class="" id="_id_fw3k_ad_input_et_type_group" 
      onchange=" eurotax.change_type_group(this.value); " 
      style="display: none; "> 

     <option value="0">1</option> 
     <option value="-1" class="special">2</option> 
     <option value="16390">CD</option> 
     <option value="17605">S</option> 
     <option value="17636">SE</option> 

</select> 

我的代碼:

Select tipSelect = new Select(driver.findElement(By.name("fw3k_ad_input_et_type_group"))); 
for (WebElement b : tipSelect.getOptions()) { 
      System.out.println(b.getText()); 
} 

請顯示代碼示例,如果您有任何。

螢火視圖: http://imageshack.us/f/138/primjer.png/ LOOK THIS

+1

你的問題是什麼? – Tarken

+0

我無法獲得選項文本。在這種情況下,「1」,「2」,「CD」,「S」,「SE」。 –

回答

0

這是可能選擇中的元素的螢火與 「顯示:無;」屬性。它們不會在頁面上列出,而是在html樹結構中。 see example of verifying element with firebug with "display: none;" attribute

然後,驗證你找到的元素propertly與螢火蟲

String optn=select[name="fw3k_ad_input_et_type_group"] option[value="0"] 
//optn1=select[name="fw3k_ad_input_et_type_group"] option[value="-1"] 
//optn2=select[name="fw3k_ad_input_et_type_group"] option[value="16390"] 
//optn3=select[name="fw3k_ad_input_et_type_group"] option[value="17605"] 
//optn4=select[name="fw3k_ad_input_et_type_group"] option[value="17636"] 

然後嘗試使用JScript的執行人(應該總是將不考慮是否元素可見或不可見)

JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 

stringBuilder.append("var x = $(\""+optn+"\");"); 
     stringBuilder.append("return x.text().toString();")  ; 


     String res= (String) js.executeScript(stringBuilder.toString()); 

希望這項工作爲你)

+0

看這個:http://imageshack.us/f/138/primjer.png/ –

0

事情是硒無法點擊隱形元素(或以其他方式與不可見元素進行交互)。所以js應該幫助。我會用以下方式解決它:

String css1="ul>li:last-child>div[id=unos_select_wrap] select[id="_id_fw3k_ad_input_et_type_group"]>option[value='0']"; 
String css2="ul>li:last-child>div[id=unos_select_wrap] select[id="_id_fw3k_ad_input_et_type_group"]>option[value='-1']"; 
String css3="ul>li:last-child>div[id=unos_select_wrap] select[id="_id_fw3k_ad_input_et_type_group"]>option[value='16390']"; 
String css4="ul>li:last-child>div[id=unos_select_wrap] select[id="_id_fw3k_ad_input_et_type_group"]>option[value='17605']"; 
String css5="ul>li:last-child>div[id=unos_select_wrap] select[id="_id_fw3k_ad_input_et_type_group"]>option[value='17636']"; 

public void getOptionTextAndPrintIt(String cssSelector){ 
JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 

stringBuilder.append("var x = $(\""+cssSelector+"\");"); 
     stringBuilder.append("return x.text().toString();"); 
     String res= (String) js.executeScript(stringBuilder.toString()); 
    System.out.println(res); 

} 
public void allOptionValuesDepiction(){ 
getOptionTextAndPrintIt(css1); 
getOptionTextAndPrintIt(css2); 
getOptionTextAndPrintIt(css3); 
getOptionTextAndPrintIt(css4); 
getOptionTextAndPrintIt(css5); 
} 

只要您檢查,請讓我知道是否有問題。

+0

它的工作原理!我已經解決了這樣的問題:JavascriptExecutor js =(JavascriptExecutor)驅動程序; String script =「var sb = [];」 +「var select = document.getElementById('_ id_fw3k_ad_input_et_type_group');」 +「for(var i = 0; i

+0

只需使用JavascriptExecutor並構建for循環以獲取選項文本(select.options [i] .text) –