認識phantomjs

来源:http://www.cnblogs.com/bhaltair/archive/2017/05/16/6859609.html
-Advertisement-
Play Games

PhantomJS是一款webkit內核的headelsss的瀏覽器,使用QtWebkit, 支持DOM操作、CSS選擇器、JSON、Canvas和SVG,可以模擬瀏覽器的服務。 安裝 mac同學使用 brew install casperjs 可以做什麼? 1. Headless的網站集成測試 可 ...


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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在編寫功能時總是會出現很多意想不到的問題,現在就講講我遇到的兩個問題,通過舉一個相似的例子來解說。 <1> 元素互相獨立,不存在包含於被包含 選擇城市的按鈕,為它綁定點擊事件,點擊後就彈出城市列表層,城市列表層設置了position與z-index的值來進行佈局,然後再點擊選擇城市按鈕,點擊事件就不 ...
  • 綜合類 前端知識體系 前端知識結構 Web前端開發大系概覽 Web前端開發大系概覽-中文版 Web Front-end Stack v2.2 免費的編程中文書籍索引 前端書籍 前端免費書籍大全 前端知識體系 免費的編程中文書籍索引 智能社 - 精通JavaScript開發 重新介紹 JavaScri ...
  • 界面設計簡潔,沉浸式的閱讀體驗,可以按分類/文章/用戶瀏覽,在文章頁顯示用戶評論,圖片使用懶載入模式,總之,實現了你看帖所需要的一切。項目基於Vue全家桶,適配移動端,有完善的文檔註釋。 ...
  • jQuery版本:2.0.3 DOM載入有關的擴展 isReady:DOM是否載入完(內部使用) readyWait:等待多少文件的計數器(內部使用) holdReady():推遲DOM觸發 ready():準備DOM觸發。 jQuery.ready.promise=function(){}; 監聽 ...
  • 輪播+滑動+返回頂部效果,插件 ...
  • 在js中的類型檢測目前我所知道的是三種方式,分別有它們的應用場景: 1、typeof:主要用於檢測基本類型. 2、instanceof:主要用於檢測引用類型(左邊是對象,右邊是函數.根據對象的原形鏈往上找,如果原形鏈上有右邊函數.prototype,返回true;否則返回false). var ob ...
  • 原文參考http://mp.weixin.qq.com/s/Nho2DHj-Y59j2F62vpN9jQ1.開發移動端,頭部必要的配置<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" ...
  • // 去掉a,input,button點擊時藍色外邊框和灰色半透明a,button,input,optgroup,select,textare{ -webkit-tap-highlight-color:rgba(0,0,0,0);}// 禁止長按顯示菜單欄a,img{ -webkit-touch-c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...