PhantomJS:基于 WebKit、开源的服务器端 JavaScript API

  • 李小兵

2015 年 1 月 30 日

话题:JavaScript语言 & 开发架构

PhantomJS是一个基于WebKit的服务器端 JavaScript API,它基于 BSD开源协议发布。PhantomJS 无需浏览器的支持即可实现对 Web 的支持,且原生支持各种 Web 标准,如 DOM 处理、JavaScript、CSS 选择器、JSON、Canvas 和可缩放矢量图形 SVG。PhantomJS 主要是通过 JavaScript 和CoffeeScript控制 WebKit 的 CSS 选择器、可缩放矢量图形 SVG 和 HTTP 网络等各个模块。PhantomJS 主要支持 Windows、Mac OS、Linux 三个平台,并且提供了对应的二进制安装包,读者可在下载页面选择对应的版本下载解压即可使用。GitHub 上还提供了 GitHub、Google Code、BitBucket等各种方式的源码下载地址

PhantomJS 的使用场景如下:

PhantomJS 已形成了一个功能非常强大的生态圈内容, 相关项目如下:

  • CasperJS:一个开源的导航脚本处理和高级测试工具
  • Poltergeist :测试工具 Capybara 的测试驱动
  • Guard::Jasmine:能够基于 Rails 实现自动化测试 Jasmine 的 Specs
  • GhostDriver:远程 WebDriver 有线协议的开源实现
  • PhantomRobot:PhantomJS 机器人测试框架
  • Mocha-PhantomJS:JavaScript 测试框架 Mocha 的客户端

此外,生态圈还包括基于 PhantomJS 实现了众多截屏工具,如capturejspageresphantomjs-screenshotsmanetscreenshot-app等;以及 Node.js、Django、PHP、Sinatra 等语言的截图 API 和ConfessGhostStoryGrover等众多工具。

PhantomJS 当前最新版本是 1.9,称为樱花(Sakura)。有趣的是 PhantomJS 的每个发布版本都以花来命名,PhantomJS 1.8 叫作蓝色冬日玫瑰(Blue Winter Rose),PhantomJS 1.7 叫作鲜艳的植物(Blazing Star),PhantomJS 1.6 叫作薰衣草(Lavender)等

接下来的2.0 版本是一个非常重要的版本,该版本的开发工作已经完成,目前开发团队正在准备各个平台上的二进制版本以及相关文档的完善,相信很快就会有发布新闻。更多关于 PhantomJS 的信息,请登录其官网或托管在GitHub 上的站点查看,有兴趣的读者还可以阅读并尝试下官方提供网络监控、页面自动化操作等相关实例


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

JavaScript语言 & 开发架构