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

Puppeteer页面无法读取Cookie 自动生成客户过期库存通知PDF问题问询

问题根因

你操作Cookie的执行顺序错误:
你在代码中先调用page.goto('http://localhost:1234/testing')加载页面,此时页面内的<script>会立即执行,打印document.cookie的内容。待页面加载完成后你才调用page.setCookie()写入数据,这时候页面脚本早已执行完毕,不会重新读取新写入的Cookie,所以截图只能看到空的Cookie值。

修复方案

调整执行顺序,在访问页面前先设置Cookie即可:

const browser = await puppeteer.launch();
const page = await browser.newPage();
// 先写Cookie
await page.setCookie(...myCookies);
// 再访问页面,Cookie会随请求一起发送,页面加载时就能读到
await page.goto('http://localhost:1234/testing', { waitUntil: 'networkidle2' });

你后续发布的最终实现代码就是采用了这个正确顺序,所以能正常读取参数生成PDF。

可选优化建议

由于Cookie存在单条4KB左右的大小限制,如果单个客户的到期库存数据量较大,可能会出现数据截断的问题,你可以改用更直接的前端数据注入方式,不需要依赖Cookie:

  1. 访问页面完成后,通过page.evaluate()直接将数据挂载到页面全局对象上
  2. 前端渲染逻辑直接读取全局对象的数据即可,不需要解析Cookie
    示例代码:
// puppeteer侧
await page.goto('http://localhost:1234/testing');
await page.evaluate((customer, expiring) => {
  window.renderData = { customer, expiring };
  // 也可以直接调用页面暴露的渲染函数
  window.main();
}, customerData, expiringData);

内容的提问来源于stack exchange,提问作者Neil Gaetano Lindberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 19:36:03