Selenium - html元素的计数器

时间:2015-08-26 13:57:02

标签: java html selenium count elements

我遇到了一个我不知道如何解决的问题。

<ul id="dropdownSelectRole" class="dropdown-menu" role="menu">
   <li><a href="#"></a></li>
   <li><a href="#">Admin</a></li>
   <li><a href="#">aaaa</a></li>
   <li><a href="#">abcd</a></li>
   <li><a href="#">admin</a></li>
</ul>

我需要计算<li>个元素的数量,以便将它放入int并稍后在while循环中使用。 任何建议(或准备好的代码)我怎么能在java中做到这一点?

还有人建议如何将每个元素的文本值带到某个列表或表格中吗?

我需要选择上面列表中的所有元素(下拉列表)来检查&#34;添加&#34;按钮将处于非活动状态,之后删除所有元素并检查&#34;添加&#34;活跃。 毕竟按下&#39;添加&#39;按钮并仅选择主列表中之前的元素(执行测试之前显示的初始数据的备份类型)。

3 个答案:

答案 0 :(得分:3)

WebElement element=driver.findElement(By.id("dropdownSelectRole"));
List<WebElement> list=element.findElements(By.tagName("li"));
int count = list.size();

“list”包含所有<li>元素,“count”包含数字。

答案 1 :(得分:2)

无需在LI中存储int的数量,只需遍历元素本身并在循环内对其进行操作,例如打印文本等

List<WebElement> lis = driver.findElements(By.cssSelector("#dropdownSelectRole > li"));
for (WebElement li : lis)
{
    System.out.println(li.getText().trim());
}

CSS选择器#dropdownSelectRole > li意味着找到一个带有id(#)dropdownSelectRole的元素,它有一个子(&gt;)LI

如果您确实需要存储LI s,int count = lis.size()

的数量

对于你需要为每个元素做的其他事情,在循环中添加该代码,每个任务将在每个LI元素上执行。

答案 2 :(得分:1)

如果你真的只需要li元素的数量,你可以使用xpath尝试这个单行:

int count = findElements(By.xpath("//ul[@id = 'dropdownSelectRole']/li")).size();