【发布时间】:2015-03-12 00:19:06
【问题描述】:
我无法获取列表中的项目。我得到的只是跨度中的一个项目。如何在选择中获取项目。如果我不在 css 选择器中使用 span,那么脚本会生成一个错误,即元素不可见。
这是页面的 HTML:
<table>
<tbody>
<tr>
<td>
<div>
<div class="select2-container select2-container-active" id="s2id_agency" style="width: 150px;">
<a href="javascript:void(0)" onclick="return false;" class="select2-choice" tabindex="-1">
<span>01_me</span>
<abbr class="select2-search-choice-close" style="display:none;"></abbr>
<div>
<b></b>
</div>
</a>
<input class="select2-focusser select2-offscreen" type="text"></div>
<select name="agency" id="agency" style="width:150px;" class="select2-offscreen" tabindex="-1">
<option value="14814">01_me</option>
<option value="14333">A_RLAgency</option>
<option value="14771">Agency_20150111183734</option>
<option value="14254">RLAgency</option>
<option value="14065">unknown_agency</option></select>
</div>
</td>
</tr>
</tbody>
这是我的脚本:
try {
WebDriverWait wait = new WebDriverWait(driver, 30);
List<String> displayed = new ArrayList<String>();
List<String> sorted = new ArrayList<String>();
List<WebElement> verifyAgency = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By
.cssSelector("#s2id_agency > a.select2-choice > span")));
System.out.println("NUMBER OF ROWS IN THIS TABLE = "
+ verifyAgency.size());
for (WebElement element : verifyAgency) {
System.out.println("" + element.getText());
displayed.add(element.getText());
sorted.add(element.getText());
}
Collections.sort(sorted);
log.info(sorted);
if (!displayed.equals(sorted)) {
final String failedMsg = "Agency is not in alphabatical ordr.";
log.error(failedMsg, null);
boolean passed = false;
Assert.assertFalse(passed, failedMsg);
System.out.println(failedMsg);
}
} catch (Exception e) {
final String failedMsg = "Failed trying to check agency names in alphabetical order.";
log.error(failedMsg, null);
boolean passed = false;
Assert.assertFalse(passed, failedMsg);
System.out.println(failedMsg);
}
【问题讨论】:
-
您的要求是什么?只打印选项?
-
是的,请确保它们按字母顺序排列。谢谢赛弗!
标签: selenium selenium-webdriver