为什么开发人员需要PhantomJS而不是仅使用某些测试框架?

时间:2012-10-03 14:25:15

标签: javascript testing coffeescript phantomjs

我不确定为什么PhantomJS是必要的,我希望有人可以提供帮助。

4 个答案:

答案 0 :(得分:119)

需要DOM的JavaScript需要在某个地方运行,通常在浏览器中运行。因此,测试框架通常启动一个浏览器,然后他们控制这些浏览器以运行测试&执行断言。测试框架本身通常无法直接控制浏览器,因此您的测试最终会有三层:

  • 框架:例如茉莉
  • 司机:例如硒
  • 浏览器:例如火狐

简单地说,PhantomJS是一个无头运行的浏览器(即没有画出屏幕)。带来的好处是速度 - 如果您正在控制计算机上的实际程序,那么在启动浏览器,配置配置文件等方面会有一定的开销。

PhantomJS在这方面要快得多(我看到的测试时间不到1/3)。唯一的权衡是您无法看到您的测试正在运行,尽管这对于自动化套件来说并不是什么大问题!如果需要,您还可以截取屏幕截图(例如,在失败时)。如果你真的想,你可以在24fps&发送到ffmpeg以呈现您的测试视频,但您可能会破坏您的速度节省:)

答案 1 :(得分:25)

这是一种常见的误解。花费一些时间与documentation通常可以解决混乱。例如,PhantomJS通常用作headless test runner用于在几十个框架中编写的测试:Buster.JS,Capybara,Mocha,Jasmine,QUnit,WebDriver,YUI Test等等。正如您在此处所看到的,PhantomJS根本不会替换这些框架。

当然,PhantomJS还有许多其他用途,从编程capture web page到自动network monitoring。有list个各种博文和文章,展示了PhantomJS的不同报告用例。

答案 2 :(得分:7)

PhantomJS并不是要取代测试框架,它将与一个一起工作。

例如,这是一个随机的例子PhantomJS used in conjunction with Jasmine

另请注意,PhantomJS不仅仅用于测试,您可以将其用于屏幕抓取或将重度渲染负载(例如,针对CPU挑战的移动浏览器)卸载到服务器上,如{{ 3}}

答案 3 :(得分:0)

此处未提及的另一个用例是渲染网页并生成该页面的图像或PDF快照。

例如,您可以将发票,报告,文档......呈现为HTML网页,并将其呈现为PDF,以便将其作为可下载文档发送给最终用户。

或者你想要screenshot thumbnails of a webpage?另一个可能的用例。