真正的无头浏览器

use*_*225 16 browser firefox webkit headless headless-browser

我负责测试大量使用AJAX的企业Web应用程序.我需要构建一个允许在没有人为干预的情况下连续运行测试的系统.目前我最感兴趣的是负载测试,但我希望用于生成负载的相同脚本用于功能测试.

目前我正在使用磨床进行负载测试.我们记录脚本然后处理它们以处理异步请求.这个系统现在有效; 但是脚本很精致,在开发周期中我无法维护它们.我需要能够通过编程语言"运行浏览器",该语言抽象出html和javascript的细节,但它必须是无头的.换句话说,如果我的测试脚本中断,它必须代表应用程序的实际破坏.在xvfb中运行firefox 不起作用,因为即使在运行xvfb的无头linux机器上,firefox仍然使用太多资源.我尝试用无头x服务器下的webdriver驱动firefox.

我已经在HTMLUnit上工作了几天,因为这是理想的解决方案.我一直在Jython中编写HTMLUnit驱动程序,因此我可以将它们与研磨机一起使用.不幸的是我遇到了javascript错误(这不是firefox/chrome/IE中的真正错误),我想我已经走到了尽头.无论如何我很清楚HtmlUnit,我真的需要一个替代品.

我知道还有其他一些解决方案(envjszombie.js); 但我不知道这些技术是如何发展的,我不想浪费另一个星期走向死胡同.

获取Firefox或Webkit的源代码并注释掉所有渲染/ GUI调用并创建真正的无头浏览器有多难?这已经完成了吗?一个人比另一个人更容易做到这一点吗?老实说,我无法理解为什么还没有这样做,所以我猜它比我预期的要困难得多.

我假设如果我能得到一个具有合理性能特征的真正无头浏览器(我有一个大型服务器机队来解决这个问题,但它不足以用于真正的Firefox和GUI渲染)那么我将被设置.

Edw*_*lde 14

在此输入图像描述

这是由http://www.phantomjs.org/的那些人完成的.用他们自己的话说:

PhantomJS是一个带有JavaScript API的无头WebKit.它具有对各种Web标准的快速和本机支持:DOM处理,CSS选择器,JSON,Canvas和SVG.

PhantomJS是基于Web的应用程序,站点抓取,页面捕获,SVG渲染器,PDF转换器和许多其他用例的无头测试的最佳解决方案.

PhantomJS由Ariya Hidayat创建

  • Gecko怎么样? (5认同)

Jon*_*nah 1

您也许能够利用一些可用的 JavaScript 单元测试工具来组装您需要的环境。

例如,我发现在rhino中加载env.js可以为测试大多数 JavaScript 提供可接受的假浏览器。它在某些 DOM 属性上存在缺陷,例如相对于窗口大小的元素,但根据我的经验,这并不是一个严重的问题。

也可以看看: