先简单介绍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官方团队进行维护的,前景会更好。
应用场景(官方简单列举了六种,我这边只提几个)
- 屏幕快照,打印PDF
- 高级爬虫(有别于传统爬虫.使用Puppeteer可以拿到渲染后的效果,传统爬虫相当于只能拿到http response)
- UI自动化测试,使用Puppeteer可以模拟用户操作
- 页面性能分析
今天的目标: 爬取SF的推荐文章,自动推荐到掘金
具体步骤
- 跳转至SF,分析DOM结构,拿到热门文章ListInfo
- 跳转到JueJin,模拟登录(这里事先注册了一个测试账号)
- 模拟填写推荐表单(就是刚才从SF拿到的热门文章)
- 如果不出意外,会是“推荐成功”,“已被推荐”两种结果
直接看效果
本来转的GIF,但图片很大也不清晰,我把录屏发到微博了,很短3分钟,也会更清楚一些: http://weibo.com/tv/v/FiHMz7dcq?fid=1034:dcc08a8eee118263f6071fb6fafcc9a9
关于自动化测试
可以看到上文都是简单的用户操作模拟,虽然距离完善的UI自动化测试还有不少的路要走,但确是一个清晰的路线。
加上应用场景不是很多,资源有限(测试大佬说接口都来不及测),公司内推动不是很迅速 希望能把这个想法广播出去,大家共同探讨想法
附上项目地址
https://github.com/zhentaoo/puppeteer-deep
运行方式:
- git clone https://github.com/zhentaoo/puppeteer-deep
- npm i (node 8.4.0)
- npm test
具体代码,有兴趣可以在做讨论,主要看API 文档
寻求伙伴
饿了么正在招人,我们组还有一个前端坑位,要求P5 P6,最好是妹子,😄