PJS001 PhantomJ简易入门
PhantomJS是什么
PhantomJS是一个基于webkit的JavaScript API,使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如前端无界面自动化测试(需要结合Jasmin)、网络监测、网页截屏等。
延伸链接
##安装
打开我的电脑->右键属性->高级系统设置->高级标签->环境变量,在系统变量里找到Path,将phantomjs.exe所在目录路径添加到环境变量里。
第一个小程序HelloWorld
编辑新建hello.js文件,输入内容如下:
//a phantomjs example
var page = require('webpage').create();
phantom.outputEncoding="gbk";
page.open("http://www.cnblogs.com/front-Thinking",
function(status) {
if ( status === "success" ) {
console.log(page.title);
} else {
console.log("Page failed to load.");
}
phantom.exit(0);
} );
在cmd命令行下运行
λ phantomjs.exe D:\Users\Frank\Desktop\PhantomJS\hello.js
front-Thinking - 博客园
代码注释:
- //webpage是phantomjs的核心模块之一,它给用户提供了访问、操作、选择web文档的接口
- 运行page.open函数,其中第一个参数是你要访问的url,第二个参数是一个回调函数。在回调函数里我们检查了下返回的状态,如果是success那么我们就将浏览的url制定文档的title打印出来,如你所见,如果不是那么打印文档加载出错。最后一行退出phantomjs执行环境。
PhantomJS核心API
- webpage:如你所见,它的作用主要是提供了一套可以访问和操作web文档的核心方法,包括操作DOM、事件捕获、用户事件模拟等等。
- system: 该模块提供了一些与操作系统相关的接口,例如访问操作系统信息、访问系统环境变量、接受命令行参数等等与程序执行相关的系统信息。
- fs:即FileSystem。熟悉NodeJS的朋友都知道,NodeJS也内建了相关的核心模块。fs提供了执行文件I/O操作的标准接口,如读写文件、删除文件等。它使得你持久化一些文件(如logfile等)变得非常容易。
- webserver:如其名字一样,你可以基于它来实现自己的webserver,用来处理请求并且执行PhantomJS代码等。
PhantomJS命令参数的用法:
PhantomJS的命令格式如下:
phantomjs [switches] [options] [script] [argument [argument [...]]]
其中,各种参数都是可选的。例如我们第一个程序的执行命令如下:
phantomjs hello.js
打开debug模式(该模式用于开发,可提供必要提示信息):
phantomjs --debug=yes hello.js
设置cookie路径:
phantomjs --cookie-file=cookie.txt hello.js