个性化阅读
专注于IT技术分析

Puppeteer:一个Node.js库,用于控制无头Chrome

本文概述

上一次, 出现了许多基于Chromium的无头浏览器, 例如Chromeless, Chrominator, Navalia, Lambdium等, 这使得选择哪种浏览器测试框架变得困难。因此, 今天我们要与你分享使用Node.js选择的最出色的浏览器测试框架之一, 我们谈论的是由Google Chrome开发者工具团队领导的项目Puppeteer。

什么是Puppeteer

基本上, Puppeteer是一个Node库, 它提供了高级API来通过DevTools协议控制无头Chrome。也可以将其配置为使用完整的Chrome。你可以使用Puppeteer及其API在浏览器中手动完成的大多数操作, 例如:

  • 生成页面的屏幕截图和PDF。
  • 抓取SPA并生成预渲染的内容(即” SSR”)。
  • 抓取网站内容。
  • 自动执行表单提交, UI测试, 键盘输入等。
  • 创建最新的自动化测试环境。使用最新的JavaScript和浏览器功能, 直接在最新版本的Chrome中运行测试。
  • 捕获站点的时间线跟踪以帮助诊断性能问题。

安装Puppeteer

当你使用NPM或Yarn之类的程序包管理器安装Puppeteer时, 它会下载Chromium的最新版本(在Mac上约为71Mb, 在Linux上约为90Mb, 在Windows上约为110Mb), 保证可以使用该API。这意味着, 与其他浏览器测试框架不同, 你将不必担心维护自己的chrome / chromium实例并使用命令行启动无头服务器。

如前所述, 你可以使用NPM或Yarn和Node.js安装Puppeteer。只需在终端中运行以下任何命令:

REM If you use NPM:
npm i puppeteer

REM Or with yarn
yarn add puppeteer

安装完成后, 你将可以通过在某些JS文件中需要puppeteer模块来控制无头浏览器。有关库及其源代码的更多信息, 请不要忘记在此处访问Github上的官方存储库。

要求

最初, Puppeteer需要Node.js 7.x才能正常工作, 因为它在源代码中使用了await关键字, 这使得异步代码更易于阅读和理解。但是, 为了提供与旧版Node.js(和LTS)版本的向后兼容性, puppeteer现在可以与Node.js版本6.x(自v0.10.0版本开始)一起使用, 这意味着你可以将其与节点的LTS版本一起使用。已安装:

REM Needs to output at least version 6
node -v

使用puppeteer, 你将能够创建屏幕截图, 生成PDF, 自动化测试以及许多其他任务。

使用Puppeteer运行脚本

要使用puppeteer执行某些任务, 你只需要基本的Node.js知识。在你的项目中安装puppeteer模块, 创建一个脚本文件script.js并在其中编写使用puppeteer的代码, 在这种情况下, 我们将使用以下代码创建我们的代码世界的屏幕截图(将代码复制并粘贴到内部script.js文件):

// Require puppeteer
const puppeteer = require('puppeteer');

(async () => {
    // Create an instance of the chrome browser
    const browser = await puppeteer.launch();

    // Create a new page
    const page = await browser.newPage();

    // Set some dimensions to the screen
    page.setViewport({
        width: 1920, height: 1080
    });

    // Navigate to Our Code World
    await page.goto('http://ourcodeworld.com');

    // Create a screenshot of Our Code World website
    await page.screenshot({
        path: 'screenshot.png'
    });

    // Close Browser
    browser.close();
})();

最后, 只需使用以下命令通过Node运行脚本:

node script.js

你只需要等到任务完成, 即可在script.js文件的同一目录中找到”我们的代码世界”的屏幕截图。

使用开发人员工具

Puppeteer上最令人敬畏的事情是, 可以在使用Chrome的同时使用Chrome开发者工具!只是不要忘记在初始化脚本中禁用无头浏览器模式:

// Require puppeteer
const puppeteer = require('puppeteer');

(async () => {
    // Create an instance of the chrome browser
    // But disable headless mode !
    const browser = await puppeteer.launch({
        headless: false
    });

    // Create a new page
    const page = await browser.newPage();

    // Set some dimensions to the screen
    page.setViewport({
        width: 1920, height: 1080
    });

    // Navigate to Our Code World
    await page.goto('http://ourcodeworld.com');

    // Create a screenshot of Our Code World website
    await page.screenshot({
        path: 'screenshot.png'
    });

    // Don't close via script but manually
    // closing the chromium window !
    // browser.close();
})();

该脚本将启动铬过程, 你将能够像往常一样使用开发人员工具, 太棒了吧?

使用开发人员工具进行Puppeteer无头浏览器测试

贡献给Puppeteer

Puppeteer是一个开源项目, 因此, 在Github官方存储库中欢迎问题报告, 代码贡献。 Chrome DevTools团队维护该库, 但是, 如果你可以提供帮助, 则可以自由地进行操作, 因此请不要忘记在此处查看项目的贡献准则。

赞(0)
未经允许不得转载:srcmini » Puppeteer:一个Node.js库,用于控制无头Chrome

评论 抢沙发

评论前必须登录!