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

Lei*_*mon 49 javascript testing coffeescript phantomjs

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

ano*_*ave 119

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

  • 框架:例如Jasmine
  • 司机:例如Selenium
  • 浏览器:例如Firefox

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

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

  • 感谢您对这个答案感兴趣.我实际上获得了一些东西,而不是通过技术术语排序! (2认同)

Ari*_*yat 25

这是一种常见的误解.花一些时间阅读文档通常可以解决困惑.例如,PhantomJS经常被用作无头测试运行器,用于在几十个框架中编写的测试:Buster.JS,Capybara,Mocha,Jasmine,QUnit,WebDriver,YUI Test等等.正如您在此处所看到的,PhantomJS根本不会替换这些框架.

当然,PhantomJS还有许多其他用途,从编程捕获网页到自动网络监控.有一系列博客文章和文章列出了不同的PhantomJS报告用例.

  • Lol您链接的网络监控类别只是说"不".是对的吗? (2认同)

man*_*oid 7

PhantomJS并不是要替换测试框架,它将与一个一起工作.

例如,这是一个与Jasmine一起使用的随机示例PhantomJS.

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