我在这里的代码行是:
List<WebElement> element = driver.findElements(By.xpath("*"));
for(int i=0; i<element.size(); i++)
{
System.out.println(i + element.get(i).getText());
}
出于某种原因,在遍历列表时,它会返回列表中一个索引中的所有元素。换句话说,元素的大小只有1。
如何将元素返回到列表的多个索引中?
答案 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)并看看你得到了什么。