Puppeteer 控制浏览器
最后更新于:2022-04-02 03:30:54
[TOC]
> [官网](https://pptr.dev/#?product=Puppeteer&version=v5.3.1&show=api-class-keyboard)
## 概述
它提供了一些高级API来通过DevTools协议控制Chromium或Chrome
## 功能
* 生成页面的截图和PDF;
* 抓取 SPA 并生成预渲染的内容(即“SSR”);
* 从网站抓取内容;
* 自动表单提交,UI测试,键盘输入等;
* 创建一个最新的自动化测试环境。 使用最新的 JavaScript 和浏览器功能,直接在最新版本的 Chrome 中运行测试;
* 捕获你网站的 Timeline Trace,来帮助诊断性能问题;
## APi
* Puppeteer:通过DevTools协议与浏览器通信,创建Browser实例。
* Browser:浏览器实例,可以拥有多个BrowserContext。
* BrowserContext:定义了一个浏览会话,可以拥有多个Page。
* Page:至少有一个Frame:主框架。 可能存在由iframe或框架标签创建的其他帧。
* Frame: 至少有一个执行上下文 - 默认执行上下文 - 执行框架的JavaScript。 Frame可能有与扩展相关联的其他执行上下文。
* Worker: 具有单个执行上下文,便于与WebWorkers交互。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/db/eb/dbebd6742050e03da030285864e24c86_780x662.png)
## 安装
```
npm i puppeteer
```
## 示例
## hello world
```
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.baidu.com');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
```
';