首页 > 解决方案 > 使用 Puppeteer 的 .goto 方法在页面导航之间未保留会话 ID?

问题描述

当尝试使用 Puppeteer 的方法导航到子页面goto时,我注意到在导航之间没有正确保留 cookie 信息。

const puppeteer = require('puppeteer');

puppeteer.launch().then(async browser => {
  const page = await browser.newPage();
  await page.goto('http://www.example.com/Summary.aspx?sid=100-013-030);
  await page.screenshot({path: 'example1.png'});
  await page.goto('http://www.example.com/DetailInfo.aspx?did=af902cb3');
  await page.screenshot({path: 'example2.png'});
  await browser.close();
});

在上面的代码中,在进行第二次goto调用时,example2.png生成的文件是摘要登录页面的屏幕截图;表示静默失败。相反,当在 Chrome 浏览器本身中手动导航时,将DetailInfo链接复制并粘贴到新选项卡中会毫无问题地打开预期的页面。

经过进一步调查,我确实注意到该网站在浏览器缓存中保留了一个带有会话 ID 的 cookie,但是手动方法和使用造成这种差异的 Puppeteer 之间有什么区别?

标签: puppeteer

解决方案


推荐阅读