不知道为什么要使用无头浏览器
本文关键字:浏览器 为什么 不知道 | 更新日期: 2023-09-27 18:10:52
我们刚刚实现的CI没有使用无头浏览器,而是使用实际的浏览器。所以一旦开发团队签入了新代码。我们的烟雾自动化代码作为后台进程在自动机器上运行并输出结果。如果有任何失败,它甚至会发送截图。我们没有得到的是,使用无头浏览器进行上述过程的优势是什么?我们需要烟雾脚本来获得报道。比如提交一个庞大的表单,它可以在5分钟内运行,包括选择、日历、上传等控件,而不是简单的加载网页。
一般来说,"无头浏览器"是一个模棱两可的术语。人们用它来指设计成无头显示的浏览器,但也指通常需要真实显示但在允许虚拟显示的配置下运行的浏览器。后者的一个实例是使用Xvfb运行Firefox。(我采取的角度是描述性:这就是人们如何谈论无头浏览器。我不是在讨论这是否正确,这将是一个规定性角度。)
我一般不会在那些设计为无头运行的浏览器上运行测试。为什么?
-
每当我比较无头浏览器和Chrome的性能时,性能的提升是非常适度的,这是天真的,没有尝试优化Chrome的设置来提高速度。(我可以想象将用户数据放在ram (
/dev/shm
)中,例如,我没有尝试。) -
在一天结束的时候,我必须证明我的软件在真实的人使用的真实浏览器中运行。普通人不会使用设计成无头的浏览器来运行我的软件。没有快捷方式来检查web应用程序是否可以在特定的浏览器上工作。您必须使用目标浏览器,就这样。即使在浏览器X版本Y中运行代码也是而不是保证代码将在浏览器X版本Z中工作(其中Z与Y不同)。我有一个应用程序在Chrome X-1和Chrome X+1中工作良好,但在Chrome X中严重崩溃(其中X是一些版本号我现在不记得了)。只有在Chrome X上的测试才揭示了这一点。无论无头浏览器基于什么,它都不能代替在应用程序所针对的实际浏览器中进行测试。
-
相反,无头浏览器可以有自己的怪癖,没有显示在其他浏览器。最近,我不得不弄清楚为什么PhantomJS在处理字体微妙之处时与Firefox或Chrome表现不同。把时间花在弄清楚用户不会因为不使用headless浏览器而遇到的怪癖上,可以把时间花在弄清楚用户在使用人们通常使用的浏览器时会遇到的怪癖上。
我不是说设计成无头运行的浏览器没有好处,但是对于测试,我通过了。
当我运行本地测试时,我确实会运行"headful"浏览器。我不希望测试窗口出现在我的桌面,除非我真的需要它
无头浏览器相对更快,因为它不需要加载任何GUI或插件。整个执行过程,即浏览器加载到浏览器关闭都发生在内存上。它不需要任何可执行文件。它可以主要用于功能测试,你不需要在特定的浏览器上测试,并确保功能正常工作。主要用于发烟试验
无头浏览器通常用于解决在没有显示硬件和物理输入设备的机器上没有真正显示的问题。
如果你能在真正的显示器上启动一个真正的浏览器,那就坚持使用它。
但是,例如,Xvfb
可以简化的一件事是:
可用于测试客户端是否在深度或深度下正确工作硬件很少支持的屏幕尺寸。
我仍然没有发现无头浏览是一致的,对我需要完成的事情也没有价值。您可以使用真正的浏览器完成任何需要的操作。
就优点而言,无头浏览提供的唯一优点是能够在没有显示器的机器上进行测试。
有些人会说使用无头测试会更快,但事实表明差异并没有那么大。此外,出于调试目的,使用普通浏览器更容易。