Puppeteer [错误:执行上下文被破坏,很可能是因为导航。]

Y. *_*iev 5 node.js web-scraping puppeteer

我有一段提交表单的代码。在该表单之后,我需要一个选择器 ( await page.waitForSelector("selector")) 来了解提交是否失败。

该代码填写了表单中的所有字段并成功提交。这里的问题是,当提交表单时,我被重定向到另一个页面,然后上下文就会丢失,或者至少这是我的理论。

// fill information
await page.type("#email", email)
await page.type("#password", password)
await page.type("#confirm-password", password)

// submit form
await page.click("#register-submit-button")

// wait for selector
await page.waitForSelector(".page-login")
Run Code Online (Sandbox Code Playgroud)

我尝试过使用await page.waitForNavigation(),而不是等待选择器,并得到了相同的结果。

我在互联网上搜索了解决方案,但没有任何效果。如果各位聪明人能解决这个问题,我将不胜感激!

Vav*_*off 11

官方文档对你的情况是这样说的:

请记住,如果 click() 触发导航事件,并且有一个单独的 page.waitForNavigation() 承诺需要解决,那么您最终可能会遇到产生意外结果的竞争条件。单击并等待导航的正确模式如下:

// submit form amd wait for navigation to a new page
await Promise.all([
  page.click("#register-submit-button"),
  page.waitForNavigation(),
]);

// then do whataever is necessary on that new page
await page.waitForSelector(".page-login")
Run Code Online (Sandbox Code Playgroud)