用于自动化的无头浏览器的区别

Difference of Headless browsers for automation

主要区别在于,基于 GUI 和非 GUI(无头)执行。

我正在寻找所有 Headless 浏览器之间的区别,但不幸的是我没有找到任何区别。我一个一个地经历,这让人更加困惑。如果有人可以分享有差异的简短信息,那就太好了,这会让事情变得清晰。

浏览器

A Browser is an application program that provides a way to look at and interact with all the information on the World Wide Web. Technically a Browser,也称为 Web 浏览器Internet 浏览器,是一个使用 HTTP (超文本传输​​协议)代表浏览器用户向整个 Internet 的 Web 服务器发出请求。


无头浏览器

A Headless Browser 也是一个 Web Browser 但没有图形用户界面 (GUI) 但可以通过编程方式控制广泛用于自动化测试和其他目的。


为什么要使用无头浏览器?

使用无头浏览器有很多优点和缺点。使用无头浏览器可能对浏览 Web 不是很有帮助,但对于 自动化 任务和测试来说,它 很棒 .


无头浏览器的优势

使用无头浏览器有很多优点。其中部分如下:

  • 使用 Headless Browser 的一个明显优势是它们通常比真正的浏览器更快。速度更快的原因是因为我们没有启动 浏览器 GUI 并且可以绕过真正的浏览器加载 CSS[=105] 的所有时间=], Java编写脚本 并打开并渲染 HTML DOM.
  • 在性能方面,使用无头浏览器时,您通常可以看到 2x15x 更快的性能。
  • 虽然 Scraping Websites 您不一定希望手动启动网站。因此,您可以无头访问该网站,只需抓取 HTML。您不需要呈现 完整浏览器 即可。
  • 许多开发人员使用 Headless Browser 进行 单元测试 代码更改 他们的网站和移动应用程序。无需手动刷新或启动浏览器即可从命令行执行所有这些操作,为他们节省了大量精力。

当您可能不想使用无头浏览器时

您选择使用 Real Browser 而不是 Headless Browser 的原因有很多。几个实例:

  • 你需要模仿真实用户。
  • 您需要直观地看到测试运行。
  • 如果您需要进行大量调试,无头调试可能会很困难。

哪些无头浏览器更好?

正如您正确指出的 ...主要区别在于基于 GUI 的执行和基于非 GUI 的执行(无头)...,因此来自 Testing Perspective 很大程度上取决于任何特定浏览器在后台实现的 Browser Engine。例如,这里有一些 浏览器引擎 可以完全呈现​​网页或 运行 Java 虚拟 DOM.[=20= 中的脚本]

  • Chromium Embedded FrameworkCEF 是一个基于 Google Chromium 项目的开源项目,带有 JavaScript 支持和 BSD 许可证。
  • ErikErik 是一个 Headless Browser,基于 Kanna 和 WebKit Swift 支持和 MIT 许可证。
  • jBrowserDriverjBrowserDriverSelenium 兼容的无头浏览器,它是 基于 WebKit 并通过 Java 绑定支持和 Apache License v2.0[= 与 Selenium Server 一起工作许可证。
  • PhantomJS: PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG with JavaScript, Python, Ruby, Java, C#, Haskell, Objective-C, Perl, PHP and R(via Selenium) 支持和 BSD 3-Clause 许可证。
  • Splash:Splash 是一个 javascript 带有 HTTP API 的呈现服务。它是一个带有 HTTP API 的轻量级浏览器,在 Python 中使用 Twisted 和 QT 以及几乎所有的 laungage 绑定技术和 BSD 3-Clause 许可证实现。

您可以在

中找到相关讨论