有许多网络浏览器自动化工具可以免费使用,其中Selenium、Playwright和Puppeteer是其中最受欢迎的工具。本文将讨论Playwright、Puppeteer和Selenium之间的区别。

网络浏览器的自动化给开发者群体带来了很多机会,现代网络应用可以通过自动化测试,网络表单可以被填写,Ajax化的网站可以被抓取和爬取,甚至可以自动购买,以及其他任务。

网络刚出现时,网络浏览器自动化的想法还没有出现,许多网络服务甚至不支持它。然而,2004年Selenium的出现,彻底改变了网络浏览器自动化领域。接着其他工具也加入了进来,包括Playwright和Puppeteer,它们都有自己独特的变化。

作为一个期待自动化网络浏览器的开发者,你一定希望为你的项目选择一个最好的。只有当你了解他们每一个后,你才可能从中选择出最适合你项目的工具。正是由于这个原因,我们才写了这篇文章。在这篇文章中,我们将讨论你可以用来自动化你的在线任务的流行的网络浏览器自动化工具。


浏览器自动化工具概述

在这样的事情上做选择时,这是一个权衡的问题,个人偏好,以及你更适应的语言。但是也有一些优势,有些人有,有些人没有。

但总的来说,这三个工具–Playwright、Puppeteer和Selenium是为了测试现代网络应用程序–以及其他形式的自动化,如网页爬取、任务自动化,甚至截图等等。让我们来看看每个工具的概述。

Selenium

可以说,Selenium是事实上的网络浏览器控制和驱动。它是最流行的网络浏览器自动化工具,不针对任何浏览器、操作系统或编程语言。Selenium是如此的通用和流行,你很难看到一个曾经做过浏览器自动化的开发者不知道它。

根据Selenium网站上的信息,它能使网络浏览器自动化,至于你怎么做,则取决于你。虽然Selenium有效,但它的资源很重,在某些情况下可能不可靠,而且可能在没有任何明显原因的情况下失败。这些导致了其他替代品的开发。

Puppeteer

Puppeteer 是 Google 对 Selenium 一些缺点的回应。Puppeteer 是Chrome DevTools团队的创意。Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过DevTools 协议控制 Chrome 或 Chromium 。Puppeteer 相对于 Selenium 的优势在于,当您安装时,会安装兼容版本的 Chromium。这消除了导致 Puppeteer 不兼容的浏览器安装升级问题。

Puppeteer 相对于 Selenium 的另一个优势是它与 Chrome 和 Chromium 的接口很好,因为它通过 DevTools 协议控制它。这与 Selenium 不同,后者通过充当 Selenium 和浏览器之间的中介的WebDriver 协议控制浏览器

Playwright

Playwright 是 3 个浏览器自动化工具中最新的一个。使用 Playwright,您可以跨所有现代浏览器可靠地测试现代 Web 应用程序。Playwright 支持 Chromium、Firefox 和WebKit,不像 Puppeteer 只支持 Chrome。有趣的是,您将使用相同的 API 与不同的浏览器进行交互。您还会喜欢 Playwright 的一些事情是它拦截网络活动,运行多页模拟场景,并带有可靠的自动等待功能。

Playwright 的使用也非常简单,您可以立即开始使用它。此外,对您了解 Playwright 很重要的是它是由 Microsoft 开发的。因此,它同样拥有像谷歌一样强大的机构支持。剧作家和木偶师都很简单。部分原因是 Puppeteer 的一些主要贡献者转而从事 Playwright 项目。


平台、浏览器和语言支持

这些工具的另一个非常重要的方面可以让您更好地了解它们之间的差异,即它们支持的 Web 浏览器以及您可以在编写它们的脚本时使用的编程语言。通常,支持的语言和浏览器越多,某个工具就越通用。让我们看看他们每个人的立场。

Playwright

在浏览器和语言支持方面,Playwright 是最好的之一。使用 Playwright,您可以自动化许多 Web 浏览器。该库对所有现代浏览器都有完整的 API 覆盖,包括 Google Chrome、Mozilla Firefox、Microsoft Edge 和 Apple Safari。对于每个浏览器,它都支持无头模式和有头模式,前者没有 UI,后者使用完整的 UI。

通常,无头模式是标准模式,因为它需要更少的内存并且运行速度更快。但是,您将需要 UI 的 headful 模式进行调试。您甚至可以使用它来测试网站的移动响应能力。

Playwright 可用于 Windows、Linux 和 Mac。在编程语言支持方面,Playwright API 支持多种编程语言,包括 Python、Typescript、JavaScript、C# 和 Go。对 Java 的支持正在进行中。

Puppeteer

Puppeteer 是跨平台的,您可以在 Windows、Mac 和 Linux 上使用它。然而,这就是多功能性结束的地方。它是为 Chromium 和 Chrome 开发的。如果您希望自动化其他 Web 浏览器,那么您需要寻找其他地方,因为 Puppeteer 不是您的浏览器控制器。

您需要考虑的另一个缺点是它的语言支持。Puppeteer 是一个 Node 库,仅供 JavaScript 开发人员使用。与支持多种语言的 Playwright 不同,Puppeteer 仅支持一种。

虽然您可能会认为缺乏对其他浏览器的支持是一个缺点,但您会发现 Puppeteer 的专业化使其成为其中最好的浏览器之一。它来自最流行的浏览器(Chrome)开发背后的同一团队,并以其他人无法做到的方式简单地与它交互。

Selenium

其中最古老的一直是万事通——它支持许多编程语言、浏览器和平台——就像 Playwright 一样。Selenium 支持 Chrome、Microsoft Edge、Firefox、Safari、Internet Explorer 和 Opera。在操作系统支持方面,Selenium 已经支持 Windows、Linux 和 Mac。

它的语言支持是无与伦比的,即使是支持多种编程语言的 Playwright。GitHub 上的主要 Selenium 项目支持 Java、Python、Ruby、C# 和 JavaScript。存在其他语言绑定。其中包括 Go、Haskell、PHP、Perl、R 和 Dart。


对接方式

区分这 3 种工具的关键特性之一是它们如何与它们控制的浏览器交互。您可能会感兴趣的是,虽然他们取得了相同的结果,但他们完成它的方式却大不相同。让我们来看看它们是如何连接和控制它支持的浏览器的。

Playwright and Puppeteer

Playwright 和 Puppeteer 库在界面和控制浏览器的方式上非常相似。同样,从概述部分中,您会发现两个项目之间有许多相似之处——接口方面就是其中之一。这两个浏览器自动化库通过 DevTools 协议自动化浏览器。

您可以将其视为库直接与浏览器对话。使用该协议,这些工具可以监听浏览器事件、访问网络事件和控制台日志、获取DOM的详细信息,甚至发出命令。

Selenium

与上面讨论的其他两个库不同,Selenium 不通过开发人员的工具协议与浏览器交互。他们遵循完全不同的方法。Selenium 通过 WebDriver 协议与浏览器交互,而不是 DevTools 协议。对于支持的每个浏览器,都有一个 WebDriver 协议。

对于 Chrome,有ChromeDriver,Safari 使用Safaridriver,Firefox 使用Geckodriver。关于此 WebDriver 协议,您需要了解的一件事是您需要为您的浏览器版本安装特定的协议。此外,您需要下载它并从您的脚本或应用程序中引用它。这增加了一定程度的复杂性。


Playwright, Puppeteer, and Selenium: 你应该使用哪个

查看这 3 个选项,您会发现它们之间没有太大区别,除了与浏览器的接口方式、它们的平台/浏览器支持以及执行速度以及其他一些方面。如果你必须把上面的事情做好,你会发现 Selenium 的主要问题是在安装过程中,它的执行速度比其他的慢。

此外,最好考虑其他因素,包括跨平台和浏览器支持。另一方面,Playwright 也是跨平台的,并且支持许多浏览器——这使它成为 Selenium 的有力竞争者。它的 API 也比 Selenium 的 API 简单易用。

Playwright 同样更现代,因此,我们的建议倾向于 Playwright,除非 Playwright 不支持您的首选语言或浏览器。如果您正在使用 Node 进行开发并且想要自动化 Chrome,那么 Puppeteer 是一个选择。

因为 Puppeteer 和 Playwright 都有相同的主要开发人员、API 和其他相似之处,所以很容易从一个切换到另一个,这与全新的 Selenium 不同。另外 Playwright 比 Puppeteer 功能更丰富。 

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

No more articles