不确定为什么要使用无头浏览器

Not sure why use headless browser

我们只是在没有使用无头浏览器的情况下实现了 CI,而是使用了实际的浏览器。因此,一旦开发 team.Our 签入了新代码,就会将自动化代码 运行 作为自动机器上的后台进程发送出去。如果有任何失败,它甚至会发送屏幕截图。我们没有得到的是,使用无头浏览器对上述过程有什么好处。我们需要我们的烟雾脚本来获得这种覆盖。假设提交一个巨大的表单,它可以 运行 在 5 分钟内使用 Select、日历、上传等控件,而不是简单的网页加载。

无外设浏览器通常用于在没有显示硬件和物理输入设备的机器上解决缺少真实显示的问题。

如果您可以在真实显示器上启动真实浏览器,请坚持下去。

不过,例如,Xvfb 可以简化的事情之一是:

it can be used to test whether clients work correctly at depths or screen sizes that are rarely supported by hardware.

我从来没有发现无头浏览是一致的,对我需要完成的事情也没有价值。您可以使用真正的浏览器完成您需要的任何事情。

就优势而言,无头浏览提供的唯一优势是能够在没有显示屏的机器上进行测试。

有人会说使用无头测试会更快,但事实表明差异并不大。 此外,出于调试目的,使用普通浏览器更容易。

无头浏览器相对更快,因为它不需要加载任何 GUI 或插件。整个执行过程,即加载浏览器到关闭浏览器都发生在内存中。它不需要任何可执行文件来工作。它主要可用于功能测试,您不必在特定浏览器上进行测试并确保功能正常运行。主要用于冒烟测试。

"Headless browser" 通常是一个模棱两可的术语。人们用它来指代 designed 到 运行 headlessly 的浏览器,也指通常需要真实显示但 运行 配置允许的浏览器它带有虚拟显示 运行。后者的一个例子是 运行ning Firefox with Xvfb。 (我的角度是描述性的:这就是人们谈论无头浏览器的方式。我不是在谈论这是否正确,这将是一个规定的角度。)

我通常不会 运行 使用那些设计为 运行 无头的浏览器进行测试。为什么?

  1. 每当我比较无头浏览器和 Chrome 之间的性能时,性能提升非常适度,而且这是天真地完成的,没有尝试优化 Chrome 的设置为了速度。 (例如,我可以想象将用户数据放在 ram (/dev/shm) 中,但我没有尝试过。)

  2. 在一天结束时,我必须证明我的软件 运行 在真实的浏览器中被真实的人使用。普通人不会使用设计为与 运行 我的软件无头的浏览器。 检查网络应用程序是否适用于特定浏览器没有捷径可走。您必须使用目标浏览器,故事结束。即使 运行 在浏览器 X 版本 Y 中使用代码 而不是 保证代码在浏览器 X 版本 Z(其中 Z 不同于 Y)中工作。我有一个应用程序在 Chrome X-1 和 Chrome X+1 中运行良好但在 Chrome X 中严重崩溃(其中 X 是我现在不记得的版本号) .除了在 Chrome X 中进行的测试外,没有别的东西揭示了这一点。无论无头浏览器基于什么,它都不能替代在您的应用程序所针对的实际浏览器中进行测试。

  3. 相反,无头浏览器可能有自己的怪癖,不会出现在其他浏览器中。我最近不得不弄清楚为什么 PhantomJS 在处理字体细微差别时与 Firefox 或 Chrome 的行为不同。花在弄清楚用户 不会 因为他们不使用无头浏览器而遇到的怪癖,可能会花在弄清楚用户在使用人们通常使用的浏览器时会遇到的怪癖。

我并不是说设计成 运行 无头的浏览器没有什么用处,但对于测试,我通过了。

当我 运行 本地测试时,我 运行 "headful" 无头浏览器。我不希望测试 window 出现在我的桌面上,除非我真的需要它。