使用 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-')]
我做了以下搜索
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-')]