selenium 使用Selify WebDriver在元素内查找时结果太多

oug3syen  于 2022-11-10  发布在  其他
关注(0)|答案(4)|浏览(173)

我做了以下搜索

parts.get(i).findElements(By.xpath("//li[starts-with(@class, '_lessons--row-')]"))

它返回了几十个结果,而我在开发工具中看到,这些结果不超过3个。
parts.get(i)返回单个WebElement
看起来它搜索的不是给定元素的子元素,而是整个页面。双斜杠会导致这种情况吗?双斜杠在XPath中意味着什么?

a7qyws3x

a7qyws3x1#

您的XPath在这里有问题。

"//li[starts-with(@class, '_lessons--row-')]"

//从根级别搜索,从节点搜索前缀.

".//li[starts-with(@class, '_lessons--row-')]"
mzmfm0qo

mzmfm0qo2#

使用.//尝试XPath,通常应该以“”开始XPath。停止从根中查找元素。

.//li[starts-with(@class, '_lessons--row-')]
bnl4lu3b

bnl4lu3b3#

//匹配相关数据。它从文档根目录开始。在您的情况下,您正在尝试使用

//li[starts-with(@class, '_lessons--row-')]

因此,它将返回您的html中的所有匹配项。如果要使用class定位元素某些特定部分,请使用开始文本_lessons--row-。你必须让你的xpath更具体。
E.g

//div[@id='someid']//li[starts-with(@class, '_lessons--row-')]
kokeuurv

kokeuurv4#

我也有过类似的情况,但//之前的.对我没有帮助。刚刚添加了findElements(By.xpath("your_xpath")).stream().filter(WebElement::isDisplayed).toList()

相关问题