javascript - 在新选项卡中打开多个链接并使用 puppeteer 操纵者循环切换焦点?

标签 javascript node.js puppeteer

我在单个页面中有多个链接,我想按顺序或同时访问这些链接。我想要做的是在各自的新选项卡中打开所有链接,并将所有页面的页面获取为 pdf。我如何使用 puppeteer 实现同样的效果?

我可以获得所有带有 DOM 和 href 属性的链接,但我不知道如何在新选项卡中打开它们、访问它们然后关闭它们。

最佳答案

你可以循环打开一个新页面:

const puppeteer = require('puppeteer');

(async () => {
  try {
    const browser = await puppeteer.launch();
    const urls = [
      'https://www.google.com',
      'https://www.duckduckgo.com',
      'https://www.bing.com',
    ];
    const pdfs = urls.map(async (url, i) => {
      const page = await browser.newPage();

      console.log(`loading page: ${url}`);
      await page.goto(url, {
        waitUntil: 'networkidle0',
        timeout: 120000,
      });

      console.log(`saving as pdf: ${url}`);
      await page.pdf({
        path: `${i}.pdf`,
        format: 'Letter',
        printBackground: true,
      });

      console.log(`closing page: ${url}`);
      await page.close();
    });

    Promise.all(pdfs).then(() => {
      browser.close();
    });
  } catch (error) {
    console.log(error);
  }
})();

关于javascript - 在新选项卡中打开多个链接并使用 puppeteer 操纵者循环切换焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48616800/

相关文章:

node.js - Angular 2 中未找到 @types 模块

javascript - 如何在 puppeteer 中使用 querySelectorAll 获取输入值

javascript - function getLargestElement - 如何让它与充满负数的数组一起工作?

javascript - 如何防止自动在 <a> 标签上执行 onclick 事件?

javascript - 全局分配一个函数给一个名字

javascript - 来自 Heroku Toolbelt 的 Foreman 退出并出现错误 : write EINVAL every time

node.js - 如何使用 NodeJS 将大文件(> 1GB)直接从给定 URL 上传到 Amazon S3,而不实际将文件保存在本地?

google-chrome - 在 Puppeteer 中如何在控制台中捕获 Chrome 浏览器日志

selenium-chromedriver - puppeteer 操纵者在点击事件后识别元素内容

javascript - NodeJS : Error with multiple GET requests