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

Reu*_*tor 1 c# selenium webdriver headless selenium-webdriver

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

Lou*_*uis 8

一般而言,"无头浏览器"是一个含糊不清的术语.人们使用它来指代设计为无头地运行的浏览器,但也指代通常需要真实显示的浏览器,但是在允许其以虚拟显示器运行的配置中运行.后者的一个实例是使用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的行为有所不同.找出用户不会因为不使用无头浏览器而不会遇到的怪癖所花费的时间可以用来计算用户在使用人们通常使用的浏览器时会遇到的怪癖.

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

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