Puppeteer 介绍
利用这个工具,我们能做一个操纵页面的人。
Puppeteer 是一个 Nodejs 的库,支持调用 Chrome 的 API 来操纵 Web,相比较 Selenium 或是 PhantomJs,它最大的特点就是它的操作 Dom 可以完全在内存中进行模拟既在 V8 引擎中处理而不打开浏览器,而且关键是这个是 Chrome 团队在维护,会拥有更好的兼容性和前景。
Puppeteer 用处
- 利用网页生成PDF、图片
- 爬取SPA应用,并生成预渲染内容(即“SSR” 服务端渲染)
- 可以从网站抓取内容
- 自动化表单提交、UI测试、键盘输入等
- 帮你创建一个最新的自动化测试环境(chrome),可以直接在此运行测试用例6.捕获站点的时间线,以便追踪你的网站,帮助分析网站性能问题
Puppeteer 使用
1. 安装 Puppeteer
1 | # 安装命令 |
若安装不成功,可手动下载,下载完后将压缩包解压,会有个 Chromium.app,将其放在你喜欢的目录下
2. 使用 API
- puppeteer.launch 启动浏览器实例
- browser.newPage() 创建一个新页面
- page.goto 进入指定网页
- page.screenshot 截图
- page.type 获取输入框焦点并输入文字
- page.keyboard.press 模拟键盘按下某个按键,目前mac上组合键无效为已知bug
- page.waitFor 页面等待,可以是时间、某个元素、某个函数
- page.frames() 获取当前页面所有的 iframe,然后根据 iframe 的名字精确获取某个想要的 iframe
- iframe.$(‘.srchsongst’) 获取 iframe 中的某个元素
- iframe.evaluate() 在浏览器中执行函数,相当于在控制台中执行函数,返回一个 Promise
- page.click() 点击一个元素
- iframe.$eval() 相当于在 iframe 中运行 document.queryselector 获取指定元素,并将其作为第一个参数传递
- iframe.$$eval 相当于在 iframe 中运行 document.querySelectorAll 获取指定元素数组,并将其作为第一个参数传递
钉钉接口
示例代码
https://github.com/weiyuan0609/dding-daily
参考: