使用Java和Selenium,如何在下拉列表中选择所有选项?

时间:2014-01-07 17:09:50

标签: java selenium

我是Java和Selenium的新手。我想获取下拉列表中的所有值,并确保它们与预期值匹配。所以我不想确保下拉列表包含A,B和C的值。

<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做到这一点。

2 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分: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);


}