基本介绍
无头浏览器,是没有界面的浏览器,可以运行在服务器,和常规浏览器不一样。 无头浏览器能模拟用户的真实操作,如打开页面,输入账密,登录,跳转等,网站是无法辨别是无头浏览器还是真实浏览器。 目前常用的无头浏览器是谷歌的puppeteer,主要用于自动化ui测试和截图,常见于自动化测试脚本,阿里内部集成蛮多的。 puppeteer是基于chrome devtools protocol协议(cdp)的。CDP协议允许使用工具来检查,调试,和分析chrome,Chromium和其他基于blink内核的浏览器。我们常用的devtools就是基于CDP协议实现的。 它使用websocket,利用wb建立devtools和浏览器内核的快速数据通道。 我们熟知的骨架屏也是利用puppeteer来自动生成的,饿了么开源的 page-skeleton-webpack-plugin 就是一个很好的应用场景。
使用时机
无头浏览器运行速度比不上自定义脚本和常规浏览器,并且使用更多RAM,此时的RAM。 主要使用场景
- 测试自动化(无头测试),是一种无需考虑用户界面或图形用户界面即可运行浏览器检查的技术。它使软件 QA 能够缩短开发周期,同时为开发人员提供更快的反馈。
- 绩效跟踪
- 布局审查
- 资料收集## 运行环境 基本都是在docker中运行的,使用k8s做容器编排。所有需要一个能运行puppeteer的docker镜像,虽然官方文档里面提供了在docker里面运行的一些配置,但是还是过于简单,很多需要自己踩坑来运行。 docker的使用需要单独开篇纪录一下。