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

Too many results when finding within element with Selenium WebDriver

我做了以下搜索

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

它返回了几十个结果,而我在开发者工具中看到的结果不超过 3 个。

parts.get(i)returns单身WebElement.

看起来它不是搜索给定元素的子元素,而是搜索整个页面。双斜杠会导致这个吗?双斜杠在 XPath 中是什么意思?

这里你的xpath有问题。

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

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

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

用 .// 试试你的 xpath,通常你应该用 "." 开始 xpath。停止从根查找元素。

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

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

进行定位
//li[starts-with(@class, '_lessons--row-')]

因此它将 return 您的 html 中的所有匹配项。如果你想定位带有 class 的元素的某些特定部分,则有 start text_lessons--row- 。你必须让你的 xpath 更具体。

例如

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