phantomjs简介

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就可以发挥想象来自动化的完成很多任务了。

具体的API介绍请看官网

最后说下phantom的不足

  • API略少。比如,只能在页面加载后添加js不能在页面加载完成前注入js
  • 文档不够人性化

总的来说是一个不错的自动化测试产品,适合程序员拿来自测和分析页面。

你可能感兴趣的:(自动化测试,phantom)