node.js - 如何将变量传递给 puppeteer 的 $eval 中的回调?

标签 node.js puppeteer

以下代码在尝试访问 uid 时由于 ReferenceError 而无法运行。我知道 eval 代码在浏览器的上下文中运行,因此无法访问此变量,但我不知道如何传递变量的值:

var uid = 'foo@example.com';
await page.$eval('#uid', el => el.value = uid);

最佳答案

page.$eval() 的第三个参数传入参数,所以你会这样做:

await page.$eval('#uid', (el, _uid) => el.value = _uid, uid);

page.$eval() docs as of Puppeteer 1.3.0 :

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

  • selector <string> A selector to query page for
  • pageFunction <function> 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

关于node.js - 如何将变量传递给 puppeteer 的 $eval 中的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845824/

相关文章:

javascript - 带有 Node.js 请求模块的多个请求池

node.js - native 模块 "_third_party_main"不工作?

javascript - 使 Puppeteer 同时转到不同的链接

javascript - Puppeteer 评估负载功能以显示警报

javascript - 在 Puppeteer 中连接浏览器

node.js - 混淆使用 aws 发送短信 [更新 : sms is delivered soo late]

node.js - 我可以依靠 Cheerio 按文件顺序退回元素吗?

javascript - 保存Nodelist并通过js数组访问

node.js - 将 PM2 与本地 Windows 服务用户一起使用时,如何配置 Puppeteer 以写入特定的临时文件夹?

puppeteer - 如何使用 Puppeteer 来处理相关元素的句柄