【发布时间】:2021-10-11 14:40:43
【问题描述】:
以下命令在 Devtools 控制台中按预期工作(例如,这里 - https://news.ycombinator.com/)
$x('//a[@class="storylink"]')(边缘浏览器)
但是下面的代码:
const page = await browser.newPage();
await page.goto("https://news.ycombinator.com/");
let urls = await page.evaluate(() => {
var item = document.evaluate(
'//a[@class="storylink"]',
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null
).singleNodeValue;
return item
})
browser.close();
返回一个空对象:{}。同样的情况也发生在其他所有网站上。
为什么会这样?
【问题讨论】:
-
//*[@id='pagespace'] 不包含任何值
-
@Fazlul 我编辑到另一个查询,仍然是
{} -
那是用 Puppeteer 吗?它在
page上公开了 XPath 评估方法$x:pptr.dev/…。let urls = await page.$x('//a[@class="storylink"]'). -
@MartinHonnen 你拯救了我的一天!
-
我已将评论的建议放入答案中,以便您接受它以将问题标记为已解决。
标签: node.js xpath document.evaluate