【发布时间】:2021-12-31 00:06:53
【问题描述】:
我是 XPath 的新手并且很困惑。任何人都可以快速浏览一下,看看我的语法有什么问题?
我正在尝试选择 id="list-overview" 中的所有直接子 div's,它们的树下某处有两个子节点,其中包含 data-price<=20 和 a div containing "Orange" text
let xy = $x(`//*[@id="list-overview"]/div[./div/a/div/div/div[@data-price<=20]][./div/a/div/div[@class='fruit'][contains(.,'Orange')]])`)
打破它。我已经分别测试了这两个并且它们有效。
`//*[@id="list-overview"]/div[./div/a/div/div/div[@data-price<=20]]`
`//*[@id="list-overview"]/div[./div/a/div/div[@class='fruit'][contains(.,'Orange')])]`
我似乎无法以某种方式将它们结合起来,并且不确定我做错了什么?
编辑:
尝试了建议,以下 xpath 不再抛出异常。但是当有匹配 price 的元素时,它返回空数组
$x(`//*[@id="list-overview"]/div[./div/a/div/div/div[@data-price<=20] and ./div/div/a/div/div[@class='fruit'][contains(.,'Orange')]]`)
【问题讨论】:
-
用相关的 HTML 更新问题
-
@DebanjanB 添加了 pastebin:pastebin.com/r05zN8BR,文件顶部带有 cmets。
-
我建议使用基于文本的 HTML 更新主要问题
标签: javascript xml selenium xpath puppeteer