我是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做到这一点。
答案 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);
}