##phantom能做那些事 官网上列了一下几个作用:
- 做单元测试
- 对页面截屏
- 操作页面的DOM
- 可以做页面的性能测试
总结起来就是自动化测试 ⊙﹏⊙b汗
##phantom基本用法
###加载页面 var page = require('webpage').create(); page.open('http://www.baidu.com', function(status) { console.log("Status: " + status); if(status === "success") { //加载成功 } phantom.exit();//退出 }); 通过page对象的open方法来加载页面,在后面的回调函数里做页面加载后你想做的事。 比如截屏
page.render('baidu.png')
比如计算加载时间: 在加载之前记录下当前时间,再待加载成功后记录下时间。
还可以操作页面里的DOM:
var page = require('webpage').create();
page.open('http://www.sample.com', function() {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
page.evaluate(function() {
$("button").click();
});
phantom.exit()
});
可以通过includeJs插入网上的js库(或者通过injectJs插入本地js文件) 在传递给evaluate的函数回在页面所在浏览器环境下执行,也就是说你可以执行所有的DOM操作
还可以分析网络请求:
var page = require('webpage').create();
page.onResourceRequested = function(request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function(response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);
每当有发出请求或者有请求返回时就会触发onResourceRequested或者onResourceReceived事件。可以在事件的回调函数里查看或者修改请求信息
有了这些API就可以发挥想象来自动化的完成很多任务了。
##最后说下phantom的不足
- API略少。比如,只能在页面加载后添加js不能在页面加载完成前注入js
- 文档不够人性化
总的来说是一个不错的自动化测试产品,适合程序员拿来自测和分析页面。