我正在尝试过滤列表,然后单击正确的文本。
列表的大小为2,看起来像:
<ul>
<li><span>first</span></li>
<li><span>second</span></li>
</ul>
出于某种原因,我的代码使我退回了整个UL而不是单个条目,并且没有遍历内部元素。
public void clickRightThing(String name) {
List<WebElement> list = driver.findElements(By.className("ul-classname"));
String returnedName;
for (WebElement row : list) {
returnedName = row.getText();
System.out.println(returnedName);
System.out.println(returnedName.length());
if (returnedName.equals(name)) {
row.click();
return;
}
}
}
正在运行clickRightThing(“ first)”将仅在循环的一次运行中打印出行的名称,大小为11,即第一行的长度+第二个,最后是列表1的大小。它从不输入if语句,因为返回的字符串是两行,而不是第一行。
first
second
11
1
我对其他HTML表格和列表结构使用了类似的方法,所以我不确定哪里出了问题。
根据选择器,您似乎正在选择ul
元素:ul-classname
。这是一个很好的第一步,下一步是选择li
的所有子ul
元素:
// Select the parent UL
WebElement parentUL = driver.findElement(By.className("ul-classname"));
// Get all WebElements of type "li" that are children of parentUL
List<WebElement> childLIs = parentUL.findElement(By.tagName("li"));
...