一、Puppeteer简介

  Puppeteer是NPM库,它提供了NodeJS高级API来控制Chrome。Puppeteer 默认以无头(无界面)方式运行,但也可以配置为运行有界面的Chrome。

  Puppeteer 提供了一系列 API,通过 Chrome DevTools Protocol 协议控制 Chromium/Chrome 浏览器的行为

二、什么是Headless Chrome

  (1)在无界面的环境中运行 Chrome
  (2)通过命令行或者程序语言操作 Chrome
  (3)无需人的干预,运行更稳定
  (4)在启动 Chrome 时添加参数 --headless,便可以 headless 模式启动 Chrome

三、Puppeteer 结构

  API分层结构,反映了浏览器结构

  • Puppeteer: 使用DevTools协议与浏览器进行通信
  • Browser:对应一个浏览器实例,一个 Browser 可以包含多个 BrowserContext、
  • BrowserContext: 对应浏览器一个上下文会话,就像我们打开一个普通的 Chrome 之后又打开一个隐身模式的浏览器一样,BrowserContext 具有独立的 Session(cookie 和 cache 独立不共享),一个 BrowserContext 可以包含多个 Page
  • Page:表示一个 Tab 页面,通过 browserContext.newPage()/browser.newPage() 创建,browser.newPage() 创建页面时会使用默认的 BrowserContext,一个 Page 可以包含多个 Frame
  • Frame: 一个框架,每个页面有一个主框架(page.MainFrame()),也可以多个子框架,主要由 iframe 标签创建产生的
  • ExecutionContext: 是 javascript 的执行环境,每一个 Frame 都一个默认的 javascript 执行环境
  • ElementHandle: 对应 DOM 的一个元素节点,通过该该实例可以实现对元素的点击,填写表单等行为,我们可以通过选择器,xPath 等来获取对应的元素

四、Puppeteer 用途

  • 网页截图或者生成 PDF
  • 自动提交表单,进行 UI 测试,键盘输入等。
  • 创建一个时时更新的自动化测试环境。 使用最新的 JavaScript 和浏览器功能直接在最新版本的Chrome中执行测试。
  • 捕获网站的时间线,帮助诊断性能问题
  • 网络爬虫
  • ......

最新文章

  1. 我用ANDROID STUDIO开发,页面上总包这个警告,很烦!网上说是sdk版本问题,但是我是基于25开发的,最小版本也是19,有没有老司机啊?3克油
  2. C# 软件绑定QQ群类开源放出
  3. zabbix-proxy3.0.4编译安装
  4. Mobius 反演
  5. openstack(liberty):部署实验平台(三,简单版本软件安装 之cinder,swift)
  6. Altium Designer学习: 原理图和PCB元件对应查找
  7. ThinkPHP的数据库访问的简单操作
  8. 使用xshell出现乱码
  9. Android getResources的作用和须要注意点
  10. 网络版shell之网络编程练习篇--telnet服务端
  11. bootstrap-dialog的使用
  12. application(expand)--easyui
  13. [Windows Phone] 导览控制项(Navigation controls)
  14. Unity3D 回合制 网上源码 目前还在研究构思
  15. 锁开销优化以及 CAS 简单说明
  16. 在VS中连接MySQL
  17. Git Extensions 和 Tortoisegit 到底是什么?Git For VS(Git For Visual Studio)(Visual Studio 中使用 Git)
  18. VSCode 打开文件tab键空格数量异常问题
  19. 谈谈我对Linux系统学习的历程回顾
  20. ASP.NET Session的实现原理分析

热门文章

  1. js前端加密,php后端解密(crypto-js,openssl_decrypt)
  2. /sbin/mount.vboxsf: mounting failed with the error: Protocol error
  3. CCS进阶——div的宽度和高度是由什么决定的?
  4. Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
  5. .NET平台上的编译器不完全列表(转别)
  6. k8s namespace限制调研
  7. Centos 6.5升级gcc : 源码安装 + rpm安装
  8. codeforce 1311 C. Perform the Combo 前缀和
  9. CodeForces - 1102A(思维题)
  10. 11.秋招复习简单整理之什么是ICMP协议,ICMP协议的功能是什么?