puppeteer - 在 puppeteer 中如何等待弹出页面完成加载?
问题描述
在以下示例中,如何等待弹出窗口完成加载?单击google图标后,您会弹出一个登录gmail的窗口,当我尝试与第二页交互时,它是未定义的(因为我不知道如何等待它完全加载。有什么建议吗?
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
page = await browser.newPage();
await page.goto("https://www.example.com/signin");
await page.waitForSelector(".Icon-google");
await page.click(".Icon-google");
const pages = await browser.pages();
console.log(pages[2].url());
})();
解决方案
您可以等待创建新目标。
const browser = await puppeteer.launch({headless: false});
page = await browser.newPage();
await page.goto("https://app.testim.io/#/signin");
await page.waitForSelector(".Icon-google");
const nav = new Promise(res => browser.on('targetcreated', res))
await page.click(".Icon-google");
await nav
const pages = await browser.pages();
console.log(pages.length);//number of pages increases !
console.log(pages.map(page => page.url()));
PS首先我尝试page.waitForNavigation()
了但它没有用,可能是因为它是一个弹出窗口。
推荐阅读
- sql - 在 sql 中使用 nvarchar 列时如何接受订单
- excel-formula - Excel公式从不同的工作表中获取另一个工作表中的总和
- linux - 如何将目录更改为在 linux 中运行作业(PID)的目录?
- c++ - 有没有一种干净的方法来混合 CRTP 和可变参数继承?
- html - index.html 主页链接已损坏。转到 c:\
- angular-material - 禁用按钮的角材料表
- rust - 在 Rust 中动态确定枚举类型
- javascript - 使用jspdf将内容导出为pdf angular
- swift - 两个精灵之间的碰撞,其中一个从另一个身上反弹
- c# - 使用 Marshal.AllocHGlobal 时 GC.AddMemoryPressure 是否合适?