获取ul中li元素的数量而不存储在列表中

时间:2019-01-11 05:03:45

标签: java selenium selenium-chromedriver

我有一个<ul>,其中有许多<li>,每个都包含一个定位标记。列表元素的xpath看起来像一个:

String xpath = "//*[@id='page']/section[8]/div/div/div[2]/div/ul/li[";

String part2 = "]/a";

我的任务涉及单击每个链接,返回首页,然后单击另一个链接。

此刻,我的网页包含5个此类元素。要单击每个元素,请在for循环中重复以下步骤:

driver.findElement(By.xpath(part1 + i + part2)).click();后跟driver.navigate().back();

问题是我已经将值5硬编码了。它可能是另一天的6,或者每天可以有任意数量的链接。

我可以使用什么逻辑来检查ul的大小? 问题是我无法使用java.util.List来预先存储链接。

2 个答案:

答案 0 :(得分:2)

您允许存储他们的计数吗? :)

int len = driver.findElements(By.xpath("//*[@id='page']/section[8]/div/div/div[2]/div/ul/li/a").size()

findElements将找到与定位符匹配的所有元素(请注意复数),以List的形式返回,并在其上获得尺寸(长度)。

所以现在您将知道循环的上限。

答案 1 :(得分:-1)

自从您提到每个<li>标签以来,都有一个锚标签。这意味着<li><a>标签的数量相同。您可以使用driver.findElements获取所有<li>标签的列表并将其保存在ArrayList中,并且可以轻松获取<li>标签的大小。该值将是您已经在使用的循环中的迭代器值。