2014-01-07 61 views
0

我是Java和Selenium的新手。我想要在下拉列表中獲取所有值,並確保它們與預期值相匹配。所以我wan't確保下拉菜單中包含A,B的值,和C.使用Java和Selenium,我如何選擇下拉菜單中的所有選項?

<select id="ctl00_cphMainContent_dq14_response" name="ctl00$cphMainContent$dq14$response"> 
<option value="0" selected="selected">Please Select...</option> 
<option value="253">DEP900</option> 
<option value="252">DEP800</option> 
<option value="251">DEP700</option> 
<option value="250">DEP600</option> 
<option value="248">DEP400</option> 
<option value="247">DEP300</option> 
<option value="246">DEP200</option> 
<option value="245">DEP100</option> 
<option value="249">DEP500</option> 
<option value="254">DEP1000</option> 
</select> 

我無法弄清楚如何抓住下拉元(前的所有文字值。DEP900 )。我想把它們放入一個ArrayList中,並將它與另一個包含期望值的列表進行比較。我打算用Assert.assertEquals來做到這一點。

回答

1

您只需要找到選項元素(使用WebDriver#findElements)並使用getText來檢索內部文本(例如:DEP9000)或getAttribute("value")以檢索其值。

例子:

List<WebElement> options = driver.findElements(By.cssSelector("#ctl00_cphMainContent_dq14_response option")); 

for(WebElement opt : options){ 
    opt.getText(); 
    opt.getAttribute("value"); 
} 
+0

謝謝馬龍。我仍然無法檢索文本。我編輯了我原來的問題。 – TestRaptor

+1

這工作在檢索下拉選項。我以前遇到的錯誤是一個錯字。 – TestRaptor

0

,你可以這樣做:

public void CompareTwoList(ArrayList<String> listfromUser) 
{ 
    WebElement select =driver.findElement(By.id("ctl00_cphMainContent_dq14_response")); 
    List<WebElement> options=select.findElements(By.tagName("option")); 
    ArrayList<String> listFromGUI=new ArrayList<>(); 

    // we are starting by 1 bcoz we are not storing the please select option in the list 
    for(int i=1;i<options.size();i++) 
    { 
    String optionTemp=options.get(i).getText().trim(); 
    listFromGUI.add(optionTemp); 
    } 

    //first we will sort both the list so that both of them are sorted in the same order 
    Collections.sort(listFromGUI,String.CASE_INSENSITIVE_ORDER); 
    Collections.sort(listfromUser,String.CASE_INSENSITIVE_ORDER); 

    Assert.assertEquals(listfromUser,listFromGUI); 


} 
+0

你可以刪除的一件事是排序,如果你已經排序的列表。 – Praveen

相關問題