无头浏览器自动化的区别

5
主要区别在于GUI和非GUI(无头)基础上的执行。我正在寻找所有无头浏览器之间的差异,但不幸的是我没有找到任何有用信息。我一个一个去查看这些浏览器,反而让我更加困惑。如果有人可以分享简要的信息和区别,那将是很好的,这将使事情变得清晰易懂。

1
嗨,Ishitha,只是提醒一下,你可以在Selenium的这里找到支持的浏览器列表。 - Kireeti Annamaraj
嗨@Ishitha,我看到你修改了问题。不过,关于无头浏览器的性能,我已经使用了所有流行的无头浏览器,如HtmlUnit驱动程序、phantom ghost驱动程序、chrome和ff无头模式等。虽然它们都比较快地完成了我的网页抓取任务,但Html unit驱动程序更快一些。你可以在这里阅读有关它的信息(https://dev59.com/V14c5IYBdhLWcg3wXJRX)。总的来说,每个无头驱动程序几乎都是相同的,性能差异很小。 - Kireeti Annamaraj
@KireetiAnnamaraj 我曾经使用HTMLUnit、chrome-headless来启动Headless,但结果是失败的。这对我的项目框架没有用处。我经常使用JQuery、JS和Angular waiter,这可能导致它失败。 - Ishita Shah
那么问题似乎是针对不同的问题,很可能与无头驱动程序无关。您可以通过发布错误堆栈跟踪和您的用例来调试实际问题。 - Kireeti Annamaraj
@IshitaShah,你能否将你的问题缩小范围,比如“GUI界面和非GUI界面(无头)执行的差异”,“何时使用哪个浏览器”,“哪些浏览器更好”以及它们之间的差异,这些都是相对较大的主题,根据StackOverflow的标准,不适合在一个问题中回答。 - undetected Selenium
显示剩余2条评论
1个回答

23

浏览器

浏览器是一种应用程序,提供了一种查看和与世界各地的网页上的所有信息进行交互的方式。从技术上讲,浏览器也被称为Web浏览器互联网浏览器,它是一种客户端程序,使用HTTP(超文本传输协议)代表浏览器用户向互联网中的Web服务器发出请求。


无头浏览器

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


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

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


无头浏览器的优点

使用无头浏览器有很多优点。以下是其中一些:

  • 使用无头浏览器的明显优势是它们通常比真正的浏览器更快。之所以更快,是因为我们没有启动浏览器 GUI,可以绕过真实浏览器加载CSSJavaScript和打开以及呈现HTML DOM所需的所有时间。
  • 在使用无头浏览器时,性能方面您通常可以看到2x15x的更快性能。
  • 爬取网站时,你不必手动启动一个网站。因此,您可以访问无头网站并仅爬取HTML。您不需要渲染完整浏览器来完成此操作。
  • 很多开发人员使用无头浏览器对他们的网站和移动应用程序的单元测试代码更改进行测试。能够通过命令行完成所有这些而无需手动刷新或启动浏览器可以节省他们大量时间和精力。

何时不使用无头浏览器

你可能有很多原因选择使用真正的浏览器而不是无头浏览器。以下是一些情况:

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

哪些无头浏览器更好?

正如您所指出的那样 ...主要区别在于GUI基础和非GUI基础(无头)的执行...,因此从 测试角度 来看,很多情况将取决于任何特定浏览器底层实现的 浏览器引擎。例如,以下是一些完全呈现网页或在虚拟DOM中运行JavaScript的 浏览器引擎

  • Chromium嵌入式框架CEF 是一个基于Google Chromium项目的开源项目,支持JavaScript并使用 BSD 许可证。
  • ErikErik 是一个基于Kanna和WebKit的 无头浏览器,支持Swift并使用 MIT 许可证。
  • jBrowserDriverjBrowserDriver 是一个 Selenium兼容的无头浏览器,基于 WebKitJava 绑定支持,并使用 Apache License v2.0 许可证。
  • PhantomJS:PhantomJS是一个无界面的WebKit,可以通过JavaScript API进行脚本编写。它有快速和本地支持各种Web标准:DOM处理、CSS选择器、JSON、Canvas和SVG,使用JavaScriptPythonRubyJavaC#HaskellObjective-CPerlPHP以及R(通过Selenium)支持,并使用BSD 3-Clause许可。
  • Splash:Splash是一个带有HTTP API的JavaScript渲染服务。它是一个轻量级的浏览器,使用Twisted和QT在Python中实现,几乎包含所有的语言绑定部分,并使用BSD 3-Clause许可。
  • 您可以在Which drivers support “no-browser”/“headless” testing?中找到相关讨论。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接