为什么没有GUI的程序/浏览器称为无头?



我很好奇为什么无头意味着"没有GUI"。无头的词源是什么?头部和GUI之间似乎没有关系。

在这种情况下,无头将被称为"没有视力"。没有头的鸡,或者没有头的公司没有头,因此它没有视力,但它仍然可以发挥作用。Selenium为想要在没有浏览器UI的情况下测试代码的程序员提供了无头浏览器模式,以表示浏览器的功能而没有"用户的意识"。

第一个堆栈帖子!唉!

从chromium的角度来看,Headless Chrome是一种在无头环境中运行google-chrome浏览器的方法,本质上是在没有chrome的情况下运行Chrome。它是用于自动化测试和服务器环境的工具,您不需要可见的 UI shell。

Headless Chrome的概念是通过--headless运行时开关实现的,该开关将使用常规Chrome二进制文件作为无头。当使用此开关启动二进制文件时,主入口点将调用无头外壳入口点,从而有效地启动该外壳而不是Chrome。为了实现这一点,Chromium 团队将依赖项从Headless删除到Ozone,因为Ozone是一项构建时功能,通常不会为常规 Chrome 构建启用。从本质上讲,这意味着实现一个新的无头特定WindowTreeHost和修改各种图形和输入入口点,以在无头模式下执行适当的操作。尽管其中大部分是特定于平台的代码,但主要目的是使 shell 能够使用完全独立于用户实际配置文件的内存中配置文件。

--headless有三个主要变化是:

  • 将 Headless Shell 转换为可嵌入的库(而不是独立的应用程序(。
  • 当使用 --headless 时,主 Chrome 入口点应该调度到 Headless Shell 入口点,即启动 Headless Shell 而不是常规的 Chrome UI。
  • 特定于平台的更改,以避免在无外设模式下依赖窗口系统。
  • 其中,跨平台更改:
    • chrome/chrome_main.cc:使用 --headless 启动时调度到 HeadlessShellMain(( 中。
    • content/browser/compositor/gpu_process_transport_factory.cc:在无外设模式下使用软件输出设备。

引用

一些参考资料:

  • 无头铬架构
  • Windows 操作系统上的运行时无头模式

最新更新