【问题标题】:how to make page wait till the navigation is not completed in puppeteer如何让页面等到 puppeteer 中的导航未完成
【发布时间】:2019-11-27 17:04:21
【问题描述】:

这是我的场景:

我的应用程序使用 Azure 身份验证,因此它的设置方式是当我说 await page.goto(url,{waitUntil:'condition'}) 时 - 它会在新选项卡中打开应用程序,然后打开一个新窗口,该窗口获取身份验证令牌并自行关闭并返回主应用页面。

现在的问题是当这个新页面打开时,puppeteer 认为这个await page.goto(url,{waitUntil:'condition', timeout:60000}) 行的执行已经完成。所以它跳到下一行,即使我的应用程序还没有加载。我不确定如何获取主应用程序页面的实例并让它等到导航完成。所以我尝试了以下选项,我尝试让所有打开的页面实例 waitForNavigation:

pages = await browser.pages(
pages.forEach(page => {
   await page.waitForNavigation({waitUntil: 'networkidle0', timeout: 60000}) 
})

-这也没有用。

请让我知道如何使父页面/包含我的主应用程序的页面等到另一个选项卡将令牌返回给它。

~tia

【问题讨论】:

  • 您没有正确使用异步等待。你能与 page.goto 分享前几行吗?

标签: javascript node.js ui-automation puppeteer


【解决方案1】:

如果您无法将登录令牌存储在实际页面中,可能会作为回调函数接收,

也许你可以使用

  • 等到浏览器有 2 个标签页
  • 等到其中一个页面是登录页面
  • 等到浏览器有 1 个选项卡(因为登录页面已回答)
  • 继续。

如果您可以检查页面中令牌的存在,

只需稍等片刻,直到令牌有值。

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2019-03-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2018-02-18
    相关资源
    最近更新 更多