gpt4 book ai didi

node.js - puppeteer 中的 page.$eval 函数始终返回未定义

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:51 32 4
gpt4 key购买 nike

我正在使用 puppeteer 和函数 page.$(selector) 来获取值。该函数返回错误“预期获取 |string| 或 |function| 作为第一个参数,但结果却是“未定义”。”我已经在 Chrome 的控制台中测试了精确的选择器,它可以工作。

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://stackoverflow.com/', {waitUntil: 'networkidle0'});
try {
const x = await page.$eval("body > header > div > ol.list-reset.grid.gs4 > li > a")
console.log(firstArticle.text())
} catch(err){
console.log(err)
}

console.log(x.text())

await browser.close();
})();

这里有什么问题吗?

最佳答案

函数 page.$eval() 必须接收两个参数,但您只发送一个。查看方法签名:

page.$eval(selector, pageFunction[, ...args])

  • selector (string) A selector to query page for
  • pageFunction (function(Element)) Function to be evaluated in browser context
  • ...args (...Serializable|JSHandle) Arguments to pass to pageFunction
  • returns: (Promise(Serializable)) Promise which resolves to the return value of pageFunction

尝试将代码更改为:

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://stackoverflow.com/', {waitUntil: 'networkidle0'});
try {
const elemText = await page.$eval("body > header > div > ol.list-reset.grid.gs4 > li > a", elem => elem.innerText)
console.log('element innerText:', elemText)
} catch(err){
console.log(err)
}
await browser.close();
})();

关于node.js - puppeteer 中的 page.$eval 函数始终返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57929480/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com