不知道为什么要使用无头浏览器

我们只是在不使用无头浏览器的情况下实现了CI,而是实际的浏览器。 因此,一旦开发团队检查了新代码。我们的烟雾自动化代码在自动机器上作为后台进程运行并发送结果。 如果有任何失败,它会发送截图。 我们没有得到的是,使用无头浏览器进行上述处理的优势是什么。 我们需要我们的烟雾脚本才能获得此保险。 比如使用Select,Calendar,Uploaded等控件提交一个可以在5分钟内运行的大型表单,而不是简单的网页加载。

一般而言,“无头浏览器”是一个含糊不清的术语。 人们使用它来指代设计为无头运行的浏览器,但也指代通常需要真实显示的浏览器,但是在允许其以虚拟显示器运行的配置中运行。 后者的一个实例是使用Xvfb运行Firefox。 (我所采取的角度是描述性的 :这是人们谈论无头浏览器的方式。我不是在谈论这是否正确,这是一个规定的角度。)

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

  1. 每当我比较无头浏览器和Chrome之间的性能时,性能提升都非常适中,这是天真的,而不是试图优化Chrome的速度设置。 (例如,我可以想象用户数据是ram( /dev/shm ),我没试过。)

  2. 在一天结束时,我必须certificate我的软件在真人使用的真实浏览器中运行。 普通人不使用设计为无头的浏览器来运行我的软件。 没有快捷方式可以检查Web应用程序是否可以与特定浏览器一起使用。 您必须使用目标浏览器,故事结束。 即使在浏览器X版本Y中运行代码也不能保证代码在浏览器X版本Z中工作(其中Z与Y不同)。 我有一个应用程序在Chrome X-1和Chrome X + 1中运行良好,但在Chrome X中崩溃严重(其中X是我现在不记得的某个版本号)。 除了在Chrome X中测试之外别无其他。 无论无头浏览器是基于什么,它都不能替代您的应用程序所针对的实际浏览器中的测试。

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

我并不是说那些设计用于无头操作的浏览器没有用处,但是对于测试,我通过了。

当我运行本地测试时,我会无头地运行“头脑”浏览器。 我不希望测试窗口显示在我的桌面上,除非我真的需要它。

无头浏览器相对较快,因为它不需要加载任何GUI或插件。 整个执行,即加载浏览器以关闭浏览器发生在内存中。 它不需要任何可执行文件。 它主要用于function测试,您无需在特定浏览器上进行测试,并确保function正常。 主要用于烟雾测试。

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

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

但是,例如, Xvfb可以变得更容易的事情之一是:

它可用于测试客户端是否在硬件很少支持的深度或屏幕尺寸下正常工作。

我仍然没有发现无头浏览是一致的,也不是我需要完成的东西。 您可以使用真正的浏览器完成所需的任何操作。

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

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