Puppeteer打开隐身上下文时如何正常获取并使用首个新页面?
问题原因
Puppeteer 中调用browser.createIncognitoBrowserContext()创建的隐身浏览器上下文默认不会自动生成任何初始页面,因此刚创建完成后调用context.pages()返回空数组是预期的正常行为,和手动打开Chrome隐身窗口会自带初始空白页的表现不同,属于API的设计差异。
可行方案
你可以直接调用context.newPage()创建页面后立刻跳转到目标地址,默认生成的about:blank空白页停留时间极短,几乎不会产生可感知的影响,也可以通过下述方式彻底规避空白页的残留问题:
- 直接跳转目标地址,适用于绝大多数普通场景:
const context = await browser.createIncognitoBrowserContext(); const page = await context.newPage(); // 直接跳转目标地址,空白页不会被用户感知到 await page.goto('https://example.com');
- 如果需要清除历史记录中的
about:blank条目,可使用location.replace方式跳转:
const context = await browser.createIncognitoBrowserContext(); const page = await context.newPage(); await page.evaluate((targetUrl) => window.location.replace(targetUrl), 'https://example.com');
注:目前Puppeteer没有提供「创建隐身上下文时自动生成首个页面」的内置接口,
context.newPage()是官方唯一支持的在指定上下文下创建页面的方法。
内容的提问来源于stack exchange,提问作者Davide Valdo
相关产品推荐
相关产品推荐

