javascript - 如何将 puppeteer 操纵者的焦点转移到弹出窗口

标签 javascript node.js puppeteer

我正在使用 Puppeteer 在网站内运行测试。单击按钮后,将出现一个带有报告的新弹出浏览器窗口。在那个新窗口中是我想要提取的信息。我怎样才能让 puppeteer 将焦点转移到这个新创建的浏览器窗口?

我的 puppeteer 页面上有多个打印按钮,点击它会创建一个弹出窗口,我正在尝试获取这些页面的 pdf。这是我正在使用的代码。

let printButtons = await this.page.$$('#printNowButton');
for (var i = 0; i < printButtons.length; i++) {
    printButtons[i].click();
    const fileName = ('Document'+ i + '.pdf');
    browser.on('targetcreated', async target => {
        if ((target.url() !== 'about:blank')) {
            try {
                const pageList = await browser.pages();
                const newPage = await pageList[pageList.length - 1];
                await newPage.pdf({
                    path: fileName,
                    format: 'A4'
                }).then(() => {
                    newPage.close();
                });
            } catch (e) {
                console.log('Error: ' + e);
            }
        }
    });
}

我正在使用 puppeteer 版本 0.13.0 任何其他获得我想要实现的目标的方法也很受欢迎。

最佳答案

你的情况有两种情况 首先,如果您使用的版本低于 v0.13.0,您将无法执行此操作 其次,如果您使用的是 Node 版本 6,则必须手动构建 Node 组件

cd node_modules/puppeteer
npm run build

关于javascript - 如何将 puppeteer 操纵者的焦点转移到弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48196682/

相关文章:

javascript - 如何在经过身份验证的页面上测试 javascript 隐藏/显示行为?

javascript - 缩放 div 内容以适应固定大小

javascript - V-for 每 2 项添加行给我错误的索引

javascript - 捕获 Node.js 中的错误

node.js - 类型错误 : Cannot read property 'crud_name' of undefined

google-chrome-devtools - 通过 Chrome DevTools 协议(protocol)读取 DOMStorage/LocalStorage

javascript - Angular 5 使用 Nodejs 发布数据 - 正文格式错误

node.js - 如何在不使用 Node.js 打开传入端口的情况下反向代理到本地服务器

node.js - 如何在puppeteer中查找 Node 的所有子 Node

javascript - 使用 const 在 puppeteer 测试中导入定位器