【发布时间】:2012-09-24 12:05:56
【问题描述】:
我不确定为什么需要 PhantomJS,希望有人能提供帮助。
【问题讨论】:
标签: javascript testing coffeescript phantomjs
我不确定为什么需要 PhantomJS,希望有人能提供帮助。
【问题讨论】:
标签: javascript testing coffeescript phantomjs
这是一个常见的误解。花一些时间在documentation 上通常会消除混乱。例如,PhantomJS 通常用作headless test runner 用于在几十个框架中编写的测试:Buster.JS、Capybara、Mocha、Jasmine、QUnit、WebDriver、YUI Test 等等。正如您在此处看到的,PhantomJS 根本不会取代那些框架。
当然,PhantomJS 还有许多其他用途,从编程的capture web page 到自动化的network monitoring。有一个 list 的各种博客文章和文章展示了 PhantomJS 报告的不同用例。
【讨论】:
此处未提及的另一个用例是呈现网页并生成该页面的图像或 PDF 快照。
例如,您可以将发票、报告、文档等呈现为 HTML 网页,并将其呈现为 PDF 以将其作为可下载文档发送给您的最终用户。
或者你想要screenshot thumbnails of a webpage?另一个可能的用例。
【讨论】:
PhantomJS 并不是要取代测试框架,它会与一个测试框架结合使用。
例如,这是一个随机的例子PhantomJS used in conjunction with Jasmine。
另请注意,PhantomJS 不仅用于测试,您还可以将其用于屏幕抓取或将繁重的渲染负载(例如,对于 CPU 挑战的移动浏览器)卸载到服务器上,如 @987654322 @。
【讨论】:
需要 DOM 的 JavaScript 需要在某个地方运行,通常是在浏览器中。所以测试框架通常会启动一个浏览器,然后他们控制它以运行测试并执行断言。测试框架本身通常无法直接控制浏览器,因此您最终需要进行三层测试:
简单地说,PhantomJS 是一个无头运行的浏览器(即不画出屏幕)。带来的好处是速度——如果你在你的计算机上控制一个实际的程序,你在启动浏览器、配置配置文件等方面会有一定的开销。
PhantomJS 在这方面要快得多(我看到测试运行的时间不到 1/3)。唯一的权衡是您看不到您的测试正在运行,尽管这对于自动化套件来说并不是什么大问题!如果需要(例如失败),您还可以截取屏幕截图。如果你真的想要,你可以以 24fps 截屏并发送到 ffmpeg 以渲染你的测试视频,尽管你可能会破坏你的速度节省:)
【讨论】: