首页 > 代码库 > 认识phantomjs

认识phantomjs

技术分享

PhantomJS是一款webkit内核的headelsss的浏览器,使用QtWebkit, 支持DOM操作、CSS选择器、JSON、Canvas和SVG,可以模拟浏览器的服务。

 

安装

mac同学使用 brew install casperjs

 

可以做什么?

1. Headless的网站集成测试

可以和单元测试框架如Jasmine、Mocha和WebDriver集成

2. 屏幕捕捉

可以捕捉的web页面

3.网络监控 性能分析

监控page loading支持输出HAR标准文件,支持使用YSlow和Jenkins进行全自动的性能分析。

4. 爬虫

5. 运行自动化测试QA 

 

phantomjs的生态圈

1. CasperJS:一个开源的导航脚本处理和高级测试工具

2. Mocha-PhantomJS:JavaScript测试框架Mocha的客户端

 

前端页面监控

前端页面监控:比如,页面第三方系统数据调用失败,模块加载异常、用户白屏、数据不正确。这时候就需要从前端DOM展示的角度来分析。并且出现问题,需要使用邮件、短信通知相关人员修复bug。并且触发报警是要有现场快照,以便复现问题。

UI测试包括网页元素的正确展现,网页交互之后的元素变化等,人工测试很是头疼,并且UI层面的测试用例也不好写。

 

注入JS文件

var webPage = require(‘webpage‘);
var page = webPage.create();
page.includeJs(‘http://code.jquery.com/jquery-1.10.2.min.js‘, function() {
// 模拟登录
var $testForm = $(‘form#login‘);
$testForm.find(‘input[name="username"]‘).value(‘barret‘);
$testForm.find(‘input[name="password"]‘).value(‘1234‘);
$testForm.submit();
});

 

执行JS代码

1 var webPage = require(‘webpage‘);
2 var page = webPage.create();
3 page.open(‘http://www.taobao.com‘, function(status) {
4 var title = page.evaluate(function() {
5 return document.title;
6 });
7 console.log(title);
8 phantom.exit();
9 });

 

测试页面加载速度

var page = require(‘webpage‘).create(),
  system = require(‘system‘),
  t, address;

if (system.args.length === 1) {
  console.log(‘Usage: loadspeed.js <some URL>‘);
  phantom.exit();
}

t = Date.now();
address = system.args[1];
page.open(address, function(status) {
  if (status !== ‘success‘) {
    console.log(‘FAIL to load the address‘);
  } else {
    t = Date.now() - t;
    console.log(‘Loading ‘ + system.args[1]);
    console.log(‘Loading time ‘ + t + ‘ msec‘);
  }
  phantom.exit();
});

phantomjs loadspeed.js http://www.baidu.com

输出 Loading http://www.baidu.com Loading time 3802msc

屏幕截图
var page = require(‘webpage‘).create();
page.open(‘http://github.com/‘, function() {
  page.render(‘github.png‘);
  phantom.exit();
});

 

设置页面背景颜色

page.evaluate(function() {
  document.body.bgColor = ‘white‘;
});

 确保在render之前




无界面的测试

PhantomJS itself is not a test framework, it is only used to launch the tests via a suitable test runner.

例如Mocha Jasmine WebDriver 


和CI系统持续集成
例如Jenkins或者TeamCity,Travis CI已经内置了对PhantomJS的支持。

最好的实践
和测试框架CasperJS集成。

 

 相关连接

官网: www.phantomjs.org

认识phantomjs