一尘不染

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

selenium

我们只是在不使用无头浏览器的情况下实施CI,而是使用实际的浏览器。因此,一旦开发团队签入了新代码,我们的烟雾自动化代码将在汽车机器上作为后台进程运行并发送结果。如果有任何故障,它甚至可以跨屏幕截图发送。我们没有得到的是,使用无头浏览器进行上述处理的好处是什么。我们需要我们的烟雾脚本来获得此覆盖范围。假设提交了一个庞大的表单,该表单可以在5分钟内使用“选择”,“日历”,“上载”等控件运行,而不是简单地加载网页。


阅读 450

收藏
2020-06-26

共1个答案

一尘不染

通常,“无头浏览器”是一个模糊的术语。人们使用它是指 旨在
无头运行的浏览器,也指通常需要真实显示但在允许其与虚拟显示一起运行的配置中运行的浏览器。后者的一个实例将是使用Xvfb运行Firefox。(我所用的角度是
描述性的 :这是人们谈论无头浏览器的方式。我不是在谈论这是否正确,这只是一个 规定性的 角度。)

我通常不会使用旨在无头运行的浏览器进行测试。为什么?

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

  2. 最终,我必须证明我的软件可以在真实的人使用的真实浏览器中运行。普通人不会使用无头设计的浏览器来运行我的软件。 没有捷径可用来检查Web应用程序是否可与特定的浏览器一起使用。 您必须使用目标浏览器,故事的结尾。即使在浏览器X版本Y中运行代码 也不 确保该代码将在浏览器X版本Z(其中Z与Y不同)中运行。我有一个可以在Chrome X-1和Chrome X + 1上正常运行的应用程序,但是在Chrome X上崩溃严重(其中X是我现在不记得的某个版本号)。除了在Chrome X中进行的测试外,其他都没有发现这一点。无论无头浏览器基于什么,它都不能替代您的应用程序所针对的实际浏览器中的测试。

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

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

当我运行本地测试时,我会无头运行“ headful”浏览器。除非确实需要,否则我不希望测试窗口显示在桌面上。

2020-06-26