認識phantomjs

PhantomJS

PhantomJS是一款webkit內核的headelsss的瀏覽器,使用QtWebkit, 支持DOM操做、CSS選擇器、JSON、Canvas和SVG,能夠模擬瀏覽器的服務。前端

 

安裝jquery

mac同窗使用 brew install casperjsgit

 

能夠作什麼?github

1. Headless的網站集成測試web

能夠和單元測試框架如Jasmine、Mocha和WebDriver集成瀏覽器

2. 屏幕捕捉網絡

能夠捕捉的web頁面框架

3.網絡監控 性能分析less

監控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

相關文章
相關標籤/搜索