这是我的场景:
我的应用程序使用 Azure 身份验证,因此它的设置方式是,当我说 await page.goto(url,{waitUntil:'condition'})
时,它会在新选项卡中打开应用程序,然后打开一个新窗口,获取身份验证 token 并自行关闭并返回主应用程序页面。
现在的问题是,当这个新页面打开时,puppeteer 认为 await page.goto(url,{waitUntil:'condition', timeout:60000})
行的执行已完成。所以它跳到下一行,即使我的应用程序尚未加载。我不确定如何获取主应用程序页面的实例并使其等待导航完成。所以我尝试了以下选项,我尝试使所有打开的页面实例 waitForNavigation:
pages = await browser.pages(
pages.forEach(page => {
await page.waitForNavigation({waitUntil: 'networkidle0', timeout: 60000})
})
-这不太有效。
请让我知道如何使父页面/包含我的主应用程序的页面等待,直到另一个选项卡将 token 返回给它。
~蒂亚
最佳答案
如果您无法在实际页面中存储登录 token ,可能会作为回调函数接收,
也许你可以用它来制作一些东西
- browser.pages获取打开的标签页数
- page.title获取页面标题
到
- 等到浏览器有 2 个选项卡
- 等到其中一个页面成为登录页面
- 等到浏览器有 1 个选项卡(因为登录页面已应答)
- 继续。
如果您可以检查页面中是否存在 token ,
只需花点时间等待 token 有值即可。
关于javascript - 如何在 puppeteer 中让页面等到导航未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59038898/