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

Java findelements(by.xpath())只返回列表的一个索引,java,selenium,xpath,selenium-webdriver,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()); } List元素=driver.findElements(By.xpath(“*”); for(int i=0;i如果driver位于文档的

我这里的代码行是:

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

for(int i=0;i如果
driver
位于文档的根,则
*
只匹配一个元素,即位于顶部的元素。如果要选择整个文档中的所有元素,则这将是正确的XPath:

List<WebElement> element = driver.findElements(By.xpath("//*"));
b
元素的字符串值为:

Here is some bold italic text.
Here is some normal text.
Here is some bold italic text.
i
元素的字符串值是:
italic


因此,如果您真的要选择所有元素并打印出它们的内容,您将遇到一些重复。

By“*”您选择了根HTML标记,这就是为什么count=1。尝试一下测试,例如“//div”(如果您需要使用XPath),看看您得到了什么。

我不熟悉XPath的递归,请尝试
By.cssSelector(“*”))
然后看看会发生什么。如果你添加你试图选择的HTML,我们可以更好地帮助你。没有什么特别的,我只是将web驱动程序指向google主页。CSSSelector返回100多个我并不真正需要的对象。我只是尝试检索网站上所有可单击的对象。使用XPath
*
*
并不是一个只获取可点击对象的表达式,所以我很困惑您如何设想只找到可点击的对象。一旦我可以列出所有元素,我就可以使用该列表做其他事情。可点击对象只是我需要完成的更大的步骤之一。
Here is some bold italic text.