一.简介

这个不大常见,比较常见的是selenium和weddriver;

所以就增加一个说明,来自官网的。


Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。

你可以在浏览器中手动执行的绝大多数操作都可以使用 Puppeteer 来完成! 下面是一些示例:

生成页面 PDF。
抓取 SPA(单页应用)并生成预渲染内容(即“SSR”(服务器端渲染))。
自动提交表单,进行 UI 测试,键盘输入等。
创建一个时时更新的自动化测试环境。 使用最新的 JavaScript 和浏览器功能直接在最新版本的Chrome中执行测试。
捕获网站的 timeline trace,用来帮助分析性能问题。
测试浏览器扩展。

二.安装

1)node

由上可知,该框架依赖于node,先安装node6+

到该地址 :http://nodejs.cn/download/选择合适的版本进行安装;

安装结束后(比如我是window),在cmd执行:node -v

以上说明安装成功了。

2)puppeteer

同样来源于官网:

安装
在项目中使用 Puppeteer:
npm i puppeteer
# or "yarn add puppeteer"
Note: 当你安装 Puppeteer 时,它会下载最新版本的Chromium(~170MB Mac,~282MB Linux,~280MB Win),以保证可以使用 API。 如果想要跳过下载,请阅读环境变量。
puppeteer-core
自 1.7. 版本以来,我们都会发布一个 puppeteer-core 包,这个包默认不会下载 Chromium。
npm i puppeteer-core
# or "yarn add puppeteer-core"
puppeteer-core 是一个的轻量级的 Puppeteer 版本,用于启动现有浏览器安装或连接到远程安装。
具体见 puppeteer vs puppeteer-core.

三.运行

1)编写example.js脚本

官网都是以默认Chromium执行,我这边以自带的chrome执行。脚本如下:

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch({executablePath:"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe"});
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'd:\\example.png'});
await browser.close();
})();

2)执行example.js

执行命令:node example.js

报错

解决:将该js放置到node puppeteer模块的目录下再执行;

四. 结果

1)在D盘目录,产生example.png文件

2)打开文件,为该url界面的截图

五.缺点

1)该工具是基于Chromium提供出的api,适合Chromium的接口,在chrome上执行未必成功;而我们客户一般是安装chrome,所以,就看涉及到的api了;

附:

官网地址:https://github.com/GoogleChrome/puppeteer

api地址:https://zhaoqize.github.io/puppeteer-api-zh_CN/#/

最新文章

  1. python 列表 总结
  2. Android属性动画之ObjectAnimator控制
  3. shell讲解-小案例
  4. 06Spring_使用注解配置bean对象
  5. ML 02、监督学习
  6. Non-constant Fields in Case Labels
  7. COM初体验
  8. git submodule的操作
  9. Ajax Not Found,asp.net mvc 中
  10. Nginx + ngx_lua安装测试【CentOs下】
  11. 在Eclipse IDE使用Gradle构建应用程序
  12. jsp登陆页面验证码在火狐浏览器不能刷新问题处理方案
  13. 关于idea的使用心得
  14. 让Tomcat告别频繁重启
  15. 记一次Maven编译IKAnalyzer失败及解决办法
  16. 通过随机数获得学生成绩,并把每个元素赋值为学生的分数成绩,通过增强for循环遍历结果。
  17. MR架构
  18. Linux kernel engineer--trace
  19. nfs共享文件搭建
  20. inux系统用户名和全名有什么区别

热门文章

  1. Python微服务实践-集成Consul配置中心
  2. 【视频开发】EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端
  3. pymysql DAO简单封装
  4. 92. 反转链表 II
  5. Python-10-迭代器
  6. SQL——函数
  7. Linux环境下错误码及意义总结
  8. php位运算及其高级应用
  9. 流程审批时执行BE插件
  10. 终于明白六大类UML类图关系了