如何在Puppeteer的$eval方法中将变量传递给回调函数?

7
以下代码因试图访问 "uid" 时出现 "引用错误(ReferenceError)" 而无法工作。我了解评估代码是在浏览器的上下文中运行,因此无法访问此变量,但我不知道如何传递变量的值。
var uid = 'foo@example.com';
await page.$eval('#uid', el => el.value = uid);
1个回答

10
page.$eval()的第三个参数传递参数,因此您将执行以下操作:
await page.$eval('#uid', (el, _uid) => el.value = _uid, uid);

page.$eval()是 Puppeteer 1.3.0 版本的文档:

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

  • selector <string>:要在页面中查询的选择器
  • pageFunction <function>:将在浏览器上下文中评估的函数
  • ...args <...Serializable|JSHandle>:要传递给 pageFunction 的参数
  • 返回值:<Promise<Serializable>>:解析为 pageFunction 的返回值的 Promise

1
一个小修正,应该是: await page.$eval('#uid', (el, _uid) => el.value = _uid, uid); - Yaniv Efraim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接