Selenium - html 元素的计数器

Selenium - counter of html 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 中做到这一点?

任何人也请建议如何将每个元素的文本值带到某个列表或table?

我需要从上面的列表(下拉列表)中选择所有元素以检查 "Add" 按钮是否处于非活动状态,然后删除所有元素并检查 "Add" 是否处于活动状态。 最后按下 'Add' 按钮并仅选择主列表中之前的元素(在执行测试之前显示的初始数据的备份类型)。

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

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

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

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

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

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

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

如果确实需要存储LI的个数,int count = lis.size()

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