1. 文档及代码仓库

1.1. Selenium
1.2. Puppeteer
1.3. Playwright

2. 支持的语言

2.1. Selenium
2.2. Puppeteer
2.3. Playwright

3. 支持的浏览器

3.1. Selenium
3.2. Puppeteer
3.3. Playwright

4. Record & Playback


5. 原理

Selenium 的核心是 WebDriver,WebDriver 用于驱动浏览器。Selenium 中存在三个角色:

综上,执行一条 Selenium 指令的流程大概是:

使用 Selenium 时,需要安装浏览器和对应的 WebDriver,并且 Selenium 基于单向的 HTTP 协议,所以先排除 Selenium。

Puppeteer 和 Playwright 使用 Devtools Protocol 与内置的浏览器进行通信,Devtools Protocol 基于双向通信的 WebSocket 协议,利用 Websocket 协议实现与浏览器内核的快速数据通道。因此它们安装简单,并且可以自动获取浏览器的实际情况。

下面是摘自 Puppeteer 官网的一段话:

Most things that you can do manually in the browser can be done using Puppeteer!

(你在浏览器中可以手工做的大多数事情都可以使用 Puppeteer 来完成!)

Puppeteer 由 Google Chrome 团队开发,它对 Chrome 拥有无与伦比的支持。但因为它专注于 Chrome 和 Node.js,所以对于非 Node.js 开发者需要排除它。