我有一个包含多个选项的下拉列表。
<select id="ctl00_cphMainContent_dq16_response" name="ctl00$cphMainContent$dq16$response">
<option value="0" selected="selected">Please Select...</option>
<option value="282">Technology Architecture</option>
<option value="281">The Avengers</option>
<option value="280">Human Resources</option>
<option value="279">R&D</option>
<option value="278">Quality Services</option>
<option value="277">Publishing</option>
<option value="275">Product Development</option>
<option value="284">MI6 - British Secret Service</option>
<option value="285">Finance</option>
<option value="276">Public Relations</option>
<option value="283">Client Services</option>
</select>
对于我的自动化测试,我有一个用于创建对象的类。所以对于我的所有下拉菜单,我都创建了一个对象。这是我为上面的下拉列表创建的对象。
public static final String Basic7_Dropdown = "css=select#ctl00_cphMainContent_dq16_response";
我在其他方法中使用此对象来测试下拉列表。例如,我有一个方法,我想验证下拉列表中的所有可用选项。
protected void verifyDropDownValues(String selector, String expectedvalue) {
List<String> listA = new ArrayList<String>();
listA.add(expectedvalue);
List<String> listB = new ArrayList<String>();
List<Element> options = driver.getElements(selector);
for(Element opt : options){
String actualtext = opt.getText();
listB.add(actualtext);
}
Assert.assertEquals(listB, listA);
}
当我在测试中使用此方法时,selector参数是我创建的Basic7_Dropdown对象。
verifyDropDownValues(AppObjects.Basic7_Dropdown, "Please Select...\nTechnology Architecture\nThe Avengers\nHuman Resources\nR&D\nQuality Services\nPublishing\nProduct Development\nMI6 - British Secret Service\nFinance\nPublic Relations\nClient Services");
通过使用我创建的相同Basic7_Dropdown对象,如何创建一个方法,找到属性为selected =“selected”的选项,然后显示该文本。
我尝试了下面的代码,希望让它返回“Please Select ...”的选定值。但是,它不会返回任何选项。
List<Element> options = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options){
if (opt.getAttribute("selected") != null) {
String actualtext = opt.getText();
System.out.println(actualtext);
}
}
我不相信我的名单会得到所有选项。当我运行下面的代码时,它只打印“null”。
List<Element> options6 = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options6){
System.out.println(opt.getAttribute("selected"));
答案 0 :(得分:1)
使用CSS只需找到<option>
并返回文字。
String textValue = driver.findElement(By.cssSelector("select[id^='ct100'][id$='response'] option[selected='selected']")).getText();
// textValue = "Please Select..." now
另外,如果您是使用java的selenium的新手,我是否可以对Getting Started with Selenium框架感兴趣。它是一个经过验证的框架,我已经使用并整合到企业系统中。
打印具有selected
属性的所有元素的文本..执行:
for (WebElement option : driver.findElements(By.cssSelector("select[id^='ct100'][id$='response'] option[selected='selected']")))
System.out.println(option.getText());