我有一个<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
来预先存储链接。
答案 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>
标签的大小。该值将是您已经在使用的循环中的迭代器值。