PhantomJS

PhantomJS是一种已停止開發的无头浏览器，用于自动化网页交互。PhantomJS 提供了一个JavaScript API，支持自动模擬鼠標、屏幕截图、用户行为和断言，使其成为用于在无头系统（如持续集成环境）中运行基于浏览器的单元测试的常用工具。PhantomJS 基于WebKit，使其成为类似于Safari和Google Chrome（在其WebKit分支变为Blink之前）的浏览环境。它是在BSD许可证下发布的开源软件。 

 历史 
PhantomJS 经过几年的开发，于 2011年1月23日由 Ariya Hidayat 发布第一次公開提交是在 2011 年。 

PhantomJS 的常用标志是黑色背景上的荧光蓝色幽灵。这是指缺少图形用户界面或浏览器主体，使 PhantomJS 用户看起来像鬼。

2018年3月，由于缺乏积极贡献，PhantomJS 的开发暂停。

 用法 
PhantomJS的JavaScript API 可用于打开网页、截屏、执行用户操作以及在页面上下文中运行注入的 JavaScript。例如，以下代码将打开英文維基百科，并在加载时将屏幕截图保存到文件并退-{}-出。
console.log('正在載入頁面');
var page = require('webpage').create();
var url = 'http://en.wikipedia.org/';
page.open(url, function (status) {
  console.log('頁面已載入');
  page.render('wikipedia.org.png');
  phantom.exit();
});

 生态系统 
PhantomJS 的影響力之大，以至于类似的项目都采用 API 作为与无头浏览器交互的标准方式。 SlimerJS 提供了一个类似 PhantomJS 的 API，但是基于Mozilla的Gecko 浏览器引擎而不是 WebKit。類似的專案trifleJS 针对Internet Explorer的MSHTML引擎。

PhantomJS 发布后不久，Nicolas Perriault 编写了 CasperJS，这是一套基于 PhantomJS 的库，可扩展其作为自动网页测试客户端的功能，允许用户利用 PhantomJS 创建行为驱动开发测试。CasperJS 的最终版本在2017年發佈。

雅虎开发了一个利用 PhantomJS 收集网站性能指标的 YSlow 版本。

 用户 
几家著名的公司已经使用了 PhantomJS。

 Twitter从 2015 年开始使用QUnit和 PhantomJS 进行单元测试。
 自 2011 年起，LinkedIn使用基于 PhantomJS 的工具进行性能测试。
 自 2014 年起，Netflix使用 Sketchy（一个使用 PhantomJS 构建的无头浏览器）来了解其網頁的行爲而无需访问该网站。
 自 2012 年起，时代华纳有线电视公司将 PhantomJS 与CoffeeScript 、 Jasmine和JUnit XML 一起用于Jenkins持续集成。

 参见 

 无头浏览器

 GitHub 

 参考來源 

Category:使用BSD许可证的软件

Category:已停止開發的軟體

Category:2011年软件
Category:使用BSD许可证的软件
Category:Webkit衍生軟體
Category:已停止開發的軟體
Category:網頁瀏覽器
Category:C++軟體
Category:C++軟體