代码之家  ›  专栏  ›  技术社区  ›  Sparker0i

在不存储在列表中的情况下获取ul中的li元素数

  •  1
  • Sparker0i  · 技术社区  · 7 年前

    我有一个 <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 回复  |  直到 7 年前
        1
  •  2
  •   Todor Minakov    7 年前

    你可以存储他们的计数吗?:)

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

    findElements 将找到与定位器匹配的所有元素(注意复数),作为列表返回,在列表上可以得到大小(长度)。

    现在您将知道循环的上界。

        2
  •  -1
  •   Neha    7 年前

    既然你提到了每一个 <li> 标记有一个定位标记。这意味着 <理工大学; <a> 标签是一样的。你可以使用 driver.findElements 获取所有列表 <理工大学; 标记并将其保存在数组列表中,可以轻松获取 <理工大学; 标签。这个值将是循环中已经使用的迭代器值。