Javascript 如何在Puppeter中让页面等待导航未完成
以下是我的设想: 我的应用程序使用Azure身份验证,因此它的设置方式是,当我说Javascript 如何在Puppeter中让页面等待导航未完成,javascript,node.js,ui-automation,puppeteer,Javascript,Node.js,Ui Automation,Puppeteer,以下是我的设想: 我的应用程序使用Azure身份验证,因此它的设置方式是,当我说wait page.goto(url,{waitUntil:'condition'})-它在一个新选项卡中打开应用程序,然后打开一个新窗口,该窗口获取身份验证令牌并关闭自身,然后返回到主应用程序页面 现在的问题是,当这个新页面打开时,Puppeter认为这个等待页面的执行已经完成。所以它跳到下一行,即使我的应用程序还没有加载。我不知道如何获取主应用程序页面的实例,并使其等待导航完成。因此,我尝试了以下选项,尝试使所有
wait page.goto(url,{waitUntil:'condition'})
-它在一个新选项卡中打开应用程序,然后打开一个新窗口,该窗口获取身份验证令牌并关闭自身,然后返回到主应用程序页面
现在的问题是,当这个新页面打开时,Puppeter认为这个等待页面的执行已经完成。所以它跳到下一行,即使我的应用程序还没有加载。我不知道如何获取主应用程序页面的实例,并使其等待导航完成。因此,我尝试了以下选项,尝试使所有打开的页面实例等待导航:
pages = await browser.pages(
pages.forEach(page => {
await page.waitForNavigation({waitUntil: 'networkidle0', timeout: 60000})
})
-这也不管用
请让我知道如何使父页面/包含我的主应用程序的页面等待,直到其他选项卡将令牌返回给它
~tia如果您无法在实际页面中存储登录令牌,可能会作为回调函数接收
也许你可以用它做点什么
- 获取打开的选项卡的数量
- 获取页面的标题
到
- 等待浏览器有2个选项卡
- 等待其中一个页面成为登录页面
- 等待浏览器有1个选项卡(因为登录页面已应答)
- 继续
如果您可以在第页中检查令牌的存在
只需等待一段时间,直到令牌有一个值 您没有正确使用async Wait。你能和page.goto分享前几行吗?