我做了以下搜索
parts.get(i).findElements(By.xpath("//li[starts-with(@class, '_lessons--row-')]"))
它返回了几十个结果,而我在开发工具中看到,这些结果不超过3个。parts.get(i)
返回单个WebElement
。
看起来它搜索的不是给定元素的子元素,而是整个页面。双斜杠会导致这种情况吗?双斜杠在XPath中意味着什么?
我做了以下搜索
parts.get(i).findElements(By.xpath("//li[starts-with(@class, '_lessons--row-')]"))
它返回了几十个结果,而我在开发工具中看到,这些结果不超过3个。parts.get(i)
返回单个WebElement
。
看起来它搜索的不是给定元素的子元素,而是整个页面。双斜杠会导致这种情况吗?双斜杠在XPath中意味着什么?
4条答案
按热度按时间a7qyws3x1#
您的XPath在这里有问题。
//
从根级别搜索,从节点搜索前缀.
:mzmfm0qo2#
使用.//尝试XPath,通常应该以“”开始XPath。停止从根中查找元素。
bnl4lu3b3#
//
匹配相关数据。它从文档根目录开始。在您的情况下,您正在尝试使用因此,它将返回您的html中的所有匹配项。如果要使用
class
定位元素某些特定部分,请使用开始文本_lessons--row-
。你必须让你的xpath
更具体。E.g
kokeuurv4#
我也有过类似的情况,但
//
之前的.
对我没有帮助。刚刚添加了findElements(By.xpath("your_xpath")).stream().filter(WebElement::isDisplayed).toList()