当尝试使用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造成这种差异的区别是什么?