剧作家 (Puppeteer) 上下文在启动时是一个空数组?

Playwright (Puppeteer) context is an empty array at launch?

在使用 puppeteer 时,我曾经使用这行代码来获取新标签:

const browser = await puppeteer.launch()
const [page] = await browser.pages()

await page.goto('http://example.com')

这样做的主要目的是减少标签数量,我的应用程序 运行 更轻便。 但是当我使用剧作家时,上下文似乎还没有包含任何页面。

const browser = await playwright.chromium.launch()
const context = await browser.newContext()
const [page] = await context.pages()

await page.goto('http://example.com')

我的代码是 运行,但我不断收到此错误消息:

(node:47248) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'goto' of undefined

只有我一个人遇到这种错误吗?

在尝试消除此错误后,我得到的代码如下所示:

const browser = await playwright.chromium.launch()
const context = await browser.defaultContext()
const [page] = await context.pages()

await page.goto('http://example.com')

我把newContext()改成了defaultContext()

如果您使用 createIncognitoBrowserContext,这与您在 puppeteer 中获得的行为相同。

const browser = await puppeteer.launch();
const context = await browser.createIncognitoBrowserContext();
const [page] = await context.pages(); //Page is null here

await page.goto('http://example.com');

puppeteer 中的 createIncognitoBrowserContext 和 playwright 中的 newContext 都是在没有页面的情况下创建的。

正如您在回答中提到的,您可以使用默认上下文或在刚创建的上下文中调用 newPage