无头浏览器在自动化方面的差异

时间:2018-10-31 12:59:53

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

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

我正在寻找所有无头浏览器之间的差异,但是很遗憾,我没有找到任何差异。我一个接一个地讲,这使我更加困惑。如果有人可以分享具有差异的简短信息,那就太好了,这很清楚。

1 个答案:

答案 0 :(得分:3)

浏览器

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


无头浏览器

无头浏览器也是 Web浏览器,但没有图形用户界面(GUI),但可以通过编程方式进行控制,可以广泛用于自动化< / em>,测试和其他目的。


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

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


无头浏览器的优势

使用无头浏览器有很多优点。一些tham如下:

  • 使用无头浏览器的明显优势是它们通常比真实的浏览器快。之所以要更快,是因为我们没有启动浏览器GUI ,并且可以绕过真实浏览器加载 CSS JavaScript ,然后打开并呈现HTML DOM
  • 在性能方面,使用无头浏览器时,通常可以看到 2倍 15倍的性能。
  • Scraping Websites期间,您不一定要手动启动网站。因此,您可以无忧无虑地访问网站,而只需抓取HTML。您无需渲染完整浏览器即可。
  • 许多开发人员使用 Headless Browser 进行网站和移动应用的单元测试 代码更改。能够从命令行执行所有这些操作而无需手动刷新或启动浏览器,这可以为他们节省很多精力。

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

出于多种原因,您可能选择使用 Real Browser 代替 Headless Browser 。几个实例:

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

哪种无头浏览器更好?

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

  • Chromium Embedded Framework CEF 是基于Google Chromium项目的开源项目,具有 JavaScript 支持和 BSD 许可。< / li>
  • Erik Erik 是Kanna和WebKit之上的 Headless浏览器,具有 Swift 支持和 MIT < / strong>许可证。
  • jBrowserDriver jBrowserDriver 与硒兼容的Headless浏览器,它是基于 WebKit 的,并且与 Selenium一起使用通过 Java 绑定支持和 Apache License v2.0 许可。
  • PhantomJS:PhantomJS是一款无头WebKit,可使用JavaScript API编写脚本。它具有对各种Web标准的快速本机支持:DOM处理,CSS选择器,JSON,Canvas和SVG,具有 JavaScript Python Ruby Java C# Haskell Objective-C Perl PHP R (通过Selenium)支持和 BSD 3-Clause 许可证。
  • Splash:Splash是具有HTTP API的javascript呈现服务。这是一个具有HTTP API的轻量级浏览器,使用Twisted和QT在Python中实现,具有几乎所有的laungage绑定技术和 BSD 3-Clause 许可证。

您可以在Which drivers support “no-browser”/“headless” testing?

中找到相关的讨论