为啥开发人员需要 PhantomJS 而不是仅仅使用一些测试框架?
Posted
技术标签:
【中文标题】为啥开发人员需要 PhantomJS 而不是仅仅使用一些测试框架?【英文标题】:Why would a developer ever need PhantomJS as opposed to just using some testing framework?为什么开发人员需要 PhantomJS 而不是仅仅使用一些测试框架? 【发布时间】:2012-09-24 12:05:56 【问题描述】:我不确定为什么需要 PhantomJS,希望有人能提供帮助。
【问题讨论】:
【参考方案1】:这是一个常见的误解。花一些时间在documentation 上通常会消除混乱。例如,PhantomJS 通常用作headless test runner 用于在几十个框架中编写的测试:Buster.JS、Capybara、Mocha、Jasmine、QUnit、WebDriver、YUI Test 等等。正如您在此处看到的,PhantomJS 根本不会取代那些框架。
当然,PhantomJS 还有许多其他用途,从编程的capture web page 到自动化的network monitoring。有一个 list 的各种博客文章和文章展示了 PhantomJS 报告的不同用例。
【讨论】:
大声笑,您链接的网络监控类别只是说“不”。对吗?【参考方案2】:此处未提及的另一个用例是呈现网页并生成该页面的图像或 PDF 快照。
例如,您可以将发票、报告、文档等呈现为 html 网页,并将其呈现为 PDF 以将其作为可下载文档发送给您的最终用户。
或者你想要screenshot thumbnails of a webpage?另一个可能的用例。
【讨论】:
【参考方案3】:PhantomJS 并不是要取代测试框架,它会与一个测试框架结合使用。
例如,这是一个随机的例子PhantomJS used in conjunction with Jasmine。
另请注意,PhantomJS 不仅用于测试,您还可以将其用于屏幕抓取或将繁重的渲染负载(例如,对于 CPU 挑战的移动浏览器)卸载到服务器上,如 @987654322 @。
【讨论】:
我真的很喜欢卸载繁重的渲染示例,谢谢提及!【参考方案4】:需要 DOM 的 javascript 需要在某个地方运行,通常是在浏览器中。所以测试框架通常会启动一个浏览器,然后他们控制它以运行测试并执行断言。测试框架本身通常无法直接控制浏览器,因此您最终需要进行三层测试:
框架:例如茉莉花 驱动程序:例如硒 浏览器:例如火狐简单地说,PhantomJS 是一个无头运行的浏览器(即不画出屏幕)。带来的好处是速度——如果你在你的计算机上控制一个实际的程序,你在启动浏览器、配置配置文件等方面会有一定的开销。
PhantomJS 在这方面要快得多(我看到测试运行的时间不到 1/3)。唯一的权衡是您看不到您的测试正在运行,尽管这对于自动化套件来说并不是什么大问题!如果需要(例如失败),您还可以截取屏幕截图。如果你真的想要,你可以以 24fps 截屏并发送到 ffmpeg 以渲染你的测试视频,尽管你可能会破坏你的速度节省:)
【讨论】:
IMO 这应该是最佳答案:p 这是问题的答案。 这是一个更好的答案 感谢您对这个答案的人性化。我实际上获得了一些东西,而不是通过技术术语进行分类!以上是关于为啥开发人员需要 PhantomJS 而不是仅仅使用一些测试框架?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 GHUnit 的异步测试中的错误断言会使应用程序崩溃,而不仅仅是测试失败?