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

时间:2015-09-01 13:12:50

标签: c# selenium selenium-webdriver webdriver headless

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

5 个答案:

答案 0 :(得分:8)

总的来说,“无头浏览器”是一个含糊不清的术语。人们使用它来指代浏览器 Designed 无头地运行,但也引用通常需要真实显示的浏览器,但是在允许它以虚拟显示器运行的配置中运行。后者的一个实例是使用Xvfb运行Firefox。 (我所采取的角度是描述性的:这就是人们谈论无头浏览器的方式。我不是在谈论这是否正确,这将是一个规范< / em>角度。)

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

  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的行为有所不同。找出用户不会因为不使用无头浏览器而不会遇到的怪癖所花费的时间可以用来搞清楚用户在使用人们通常使用的浏览器时会遇到的怪癖。

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

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

  

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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