Puppeteer--UI自动化测试And高级爬虫

时间:2022-12-20 22:12:55

先简单介绍Puppeteer

官方文档:https://github.com/GoogleChrome/puppeteer

Puppeteer is a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome.

Puppeteer是一个node库,他提供了一组用来操纵Chrome的API,默认headless也就是无UI的chrome,也可以配置为有UI。其实有点类似于PhantomJS,但Puppeteer是Chrome官方团队进行维护的,前景会更好。

应用场景(官方简单列举了六种,我这边只提几个)

  1. 屏幕快照,打印PDF
  2. 高级爬虫(有别于传统爬虫.使用Puppeteer可以拿到渲染后的效果,传统爬虫相当于只能拿到http response)
  3. UI自动化测试,使用Puppeteer可以模拟用户操作
  4. 页面性能分析

今天的目标: 爬取SF的推荐文章,自动推荐到掘金

具体步骤

  1. 跳转至SF,分析DOM结构,拿到热门文章ListInfo
  2. 跳转到JueJin,模拟登录(这里事先注册了一个测试账号)
  3. 模拟填写推荐表单(就是刚才从SF拿到的热门文章)
  4. 如果不出意外,会是“推荐成功”,“已被推荐”两种结果

直接看效果

本来转的GIF,但图片很大也不清晰,我把录屏发到微博了,很短3分钟,也会更清楚一些:http://weibo.com/tv/v/FiHMz7dcq?fid=1034:dcc08a8eee118263f6071fb6fafcc9a9

关于自动化测试

可以看到上文都是简单的用户操作模拟,虽然距离完善的UI自动化测试还有不少的路要走,但确是一个清晰的路线。

加上应用场景不是很多,资源有限(测试大佬说接口都来不及测),公司内推动不是很迅速希望能把这个想法广播出去,大家共同探讨想法

附上项目地址

https://github.com/zhentaoo/puppeteer-deep

运行方式:

  1. git clone https://github.com/zhentaoo/puppeteer-deep
  2. npm i (node 8.4.0)
  3. npm test

具体代码,有兴趣可以在做讨论,主要看API 文档