findelements(by.xpath())只返回列表的一个索引

时间:2014-03-10 17:53:11

标签: java selenium xpath selenium-webdriver

我在这里的代码行是:

List<WebElement> element = driver.findElements(By.xpath("*"));
for(int i=0; i<element.size(); i++)
{
        System.out.println(i + element.get(i).getText());
} 

出于某种原因,在遍历列表时,它会返回列表中一个索引中的所有元素。换句话说,元素的大小只有1。

如何将元素返回到列表的多个索引中?

2 个答案:

答案 0 :(得分:1)

如果driver位于文档的根目录,那么*只会匹配一个元素,即顶部的元素。如果要选择整个文档中的所有元素,那么这将是正确的XPath:

List<WebElement> element = driver.findElements(By.xpath("//*"));

请注意,HTML元素的字符串值是它包含的文本的组合,加上其后代的文本,一直递归递减。例如:

<p>
  <b>Here is some bold <i>italic</i> text.</b>
  Here is some normal text.
</p>

p元素的字符串值为:

Here is some bold italic text.
Here is some normal text.

b元素的字符串值为:

Here is some bold italic text.

i元素的字符串值为:italic

因此,如果您要实际选择所有元素并打印出其内容,您将会遇到一些重复。

答案 1 :(得分:0)

By&#34; *&#34;您选择了根HTML标记,这就是为什么count = 1.尝试仅用于测试,例如。 &#34; // div&#34;(如果你需要使用XPath)并看看你得到了什么。