javascript - 如何在 puppeteer 中让页面等到导航未完成

标签 javascript node.js ui-automation puppeteer

这是我的场景:

我的应用程序使用 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 ,可能会作为回调函数接收,

也许你可以用它来制作一些东西

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

如果您可以检查页面中是否存在 token ,

只需花点时间等待 token 有值即可。

关于javascript - 如何在 puppeteer 中让页面等到导航未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59038898/

相关文章:

javascript - 创建javascript对象

javascript - PhoneGap 上的 Ajax 请求在 2G 上比 3G 上更快

javascript - mysql实现流读和流插入

node.js - Mongo : Group, 推送并排序

javascript - JavaScript 中 float 和非空的验证

javascript - 在 redux 中间件中调度多个操作

javascript - 如何通过express路径查找mongo数据并将数据打印到jade模板中

selenium - 是否可以使用 appium 和 nightwatchjs 为移动 native 应用程序编写测试?

powershell - 如何使用 Register-ObjectEvent 检测 PowerShell 中进程的 MainWindowTitle 的更改?

c# - 无法使用 ValuePattern,即使它受支持