剧作家 (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
。
在使用 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
。