Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Puppeter中让页面等待导航未完成_Javascript_Node.js_Ui Automation_Puppeteer - Fatal编程技术网

Javascript 如何在Puppeter中让页面等待导航未完成

Javascript 如何在Puppeter中让页面等待导航未完成,javascript,node.js,ui-automation,puppeteer,Javascript,Node.js,Ui Automation,Puppeteer,以下是我的设想: 我的应用程序使用Azure身份验证,因此它的设置方式是,当我说wait page.goto(url,{waitUntil:'condition'})-它在一个新选项卡中打开应用程序,然后打开一个新窗口,该窗口获取身份验证令牌并关闭自身,然后返回到主应用程序页面 现在的问题是,当这个新页面打开时,Puppeter认为这个等待页面的执行已经完成。所以它跳到下一行,即使我的应用程序还没有加载。我不知道如何获取主应用程序页面的实例,并使其等待导航完成。因此,我尝试了以下选项,尝试使所有

以下是我的设想:

我的应用程序使用Azure身份验证,因此它的设置方式是,当我说
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分享前几行吗?