【问题标题】:Difference of Headless browsers for automation用于自动化的无头浏览器的区别
【发布时间】:2020-02-28 13:55:31
【问题描述】:

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

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

【问题讨论】:

  • 嘿 Ishitha,仅供参考,您可以通过 Selenium here找到支持的浏览器列表
  • @KireetiAnnamaraj 谢谢。我没在 seleniumhq 上看过。
  • 嗨@Ishitha,我看到你已经改变了问题。但是,说到无头浏览器的性能,我使用了所有流行的无头浏览器,如 HtmlUnit 驱动程序、幻影幽灵驱动程序、chrome 和 ff 无头模式。尽管所有这些都满足了我更快地进行网络抓取的目的,但 Html 单元驱动程序要快一些。你可以阅读它here。但是,总的来说,每个无头驱动程序几乎都相同,性能差异可以忽略不计。
  • @KireetiAnnamaraj 我曾经从 HTMLUnit 的 Headless 开始,chrome-headless,结果我失败了。这不适用于我的项目框架。我经常使用 JQuery、JS 和 Angular 服务员,这使得我认为它失败了。
  • 那么这个问题似乎是针对不同的问题,很可能与无头驱动程序无关。您可能希望通过发布错误堆栈跟踪和您的用例来调试实际问题

标签: selenium selenium-webdriver headless headless-browser htmlunit-driver


【解决方案1】:

浏览器

Browser 是一个应用程序,它提供了一种查看万维网上所有信息并与之交互的方法。从技术上讲,Browser,也称为 Web 浏览器Internet 浏览器,是一个客户端程序,它使用 HTTP(超文本传输​​协议)向整个网络中的 Web 服务器发出请求。代表浏览器用户上网。


无头浏览器

无头浏览器也是一种Web浏览器,但没有图形用户界面(GUI),但可以通过编程方式控制,可广泛用于自动化、测试和其他用途。


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

使用无头浏览器有很多优点和缺点。使用无头浏览器可能对浏览网页没有太大帮助,但对于自动化任务和测试来说,它很棒


无头浏览器的优势

使用无头浏览器有很多优势。部分内容如下:

  • 使用无头浏览器的一个明显优势是它们通常比真正的浏览器更快。更快的原因是因为我们没有启动 Browser GUI,并且可以绕过真正的浏览器加载 CSSJavaScript 所花费的所有时间> 并打开并渲染HTML DOM
  • 在性能方面,使用无头浏览器时,您通常可以看到 2x15x 的性能提升。
  • 虽然Scraping Websites 您不一定要手动启动网站。因此,您可以无头访问网站,只需抓取 HTML。你不需要渲染一个完整浏览器来做到这一点。
  • 许多开发人员使用 Headless Browser 对其网站和移动应用程序进行单元测试 代码更改。无需手动刷新或启动浏览器即可从命令行完成所有这些操作,可以节省大量精力。

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

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

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

哪些无头浏览器更好?

正如你正确指出的那样 ...主要区别在于 GUI 基础和非 GUI 基础上的执行(无头)...,所以从 Testing Perspective很大程度上取决于任何特定浏览器在后台实现的Browser Engine。例如,以下是一些完全呈现网页或在虚拟 DOM 中运行 JavaScript 的浏览器引擎

  • Chromium Embedded FrameworkCEF 是一个基于 Google Chromium 项目的开源项目,支持 JavaScriptBSD 许可证。
  • ErikErik 是基于 Kanna 和 WebKit 的 Headless Browser,支持 SwiftMIT 许可证。
  • jBrowserDriver: jBrowserDriver 是一个与 Selenium 兼容的无头浏览器,它是 基于 WebKit 并与 Selenium Server 一起使用通过 Java 绑定支持和 Apache License v2.0 许可。
  • PhantomJS:PhantomJS 是一个无头的 WebKit,可使用 JavaScript API 编写脚本。它具有对各种 Web 标准的快速原生支持:DOM 处理、CSS 选择器、JSON、Canvas 和带有 JavaScriptPythonRuby 的 SVG 、JavaC#HaskellObjective-CPerlPHPR(通过 Selenium)支持和 BSD 3-Clause 许可证。
  • Splash:Splash 是一个带有 HTTP API 的 javascript 渲染服务。它是一个带有 HTTP API 的轻量级浏览器,使用 Twisted 和 QT 在 Python 中实现,几乎所有语言绑定艺术和 BSD 3-Clause 许可。

您可以在Which drivers support “no-browser”/“headless” testing?找到相关讨论

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 2011-01-06
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2012-06-09
    • 2012-11-14
    相关资源
    最近更新 更多