You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Puppeteer的page.evaluate传入外部变量显示未定义如何解决

问题原因

page.evaluate 的回调函数是在浏览器隔离上下文中执行的,和Node.js运行上下文完全独立,无法直接读取Node侧声明的变量,必须把需要传递的变量作为page.evaluate的额外参数按顺序传入,你给出的代码刚好缺失了这部分参数传递逻辑,同时还缺少回调的闭合括号。

修复后的代码
let fname = lines[Math.floor(Math.random() * lines.length)].toString()
let lname = lines[Math.floor(Math.random() * lines.length)].toString()

await page.evaluate((fname, lname) => {
    document.getElementById('first-name-su').value = fname;
    document.getElementById('last-name-su').value = lname;
}, fname, lname) // 此处按顺序传入Node侧声明的变量即可
额外注意事项
  • 传递给page.evaluate的参数必须是可序列化的,即可以被JSON序列化的类型,函数、Symbol、DOM节点这类不可序列化的内容无法正常传递
  • 入参顺序需要和回调函数的参数顺序严格对应,顺序错误会导致赋值混乱

内容的提问来源于stack exchange,提问作者Bmoney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 01:54:01