1. 程式人生 > >前端自動化測試工具PhantomJS+CasperJS結合使用教程

前端自動化測試工具PhantomJS+CasperJS結合使用教程

下面的安裝測試基於window系統(win10)

1.PhantomJS

PhantomJS 是一個基於 WebKit 的伺服器端JavaScript API,它全面支援web而不需瀏覽器支援,其快速,原生支援各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。 PhantomJS 可以用於 頁面自動化, 網路監測 , 網頁截圖 ,以及 無介面測試 等

1.1 安裝

1.2 使用

  • 示例demo1.js–截圖:
var page = require('webpage').create();
page.viewportSize = {
    width: 1366
, height: 800 }; var urls = ["https://www.baidu.com/", "https://zrysmt.github.io/"]; page.open(urls[0], function() { console.log('welcome!'); page.render('screen.png'); phantom.exit(); });

命令列輸入:

phantomjs demo1.js
  • 示例demo2.js–DOM操作
var page = require('webpage').create();
phantom.outputEncoding = "gbk"
; //解決中文亂碼 page.open("https://www.baidu.com/", function(status) { console.log(status); page.render('screen.png'); var title = page.evaluate(function() { return document.title; }); console.log('Page title: ' + title); phantom.exit(); });

執行命令同上,得到結果是:

success
Page title: 百度一下,你就知道

所執行的DOM操作要在page.evaluate中,

  • 示例demo3.js–讀取檔案
var system = require('system');
var fs = require('fs');

phantom.outputEncoding = "gbk"; //解決中文亂碼
var filePath = "url-02.txt";
var content = fs.read(filePath);
console.log(content);

url-02.txt中如果是很多url,一個一個訪問url的話,可能會這樣實現

page.open(urlArr[0], function(status) {
    page.open(urlArr[1], function(status) {
       page.open(urlArr[2], function(status) {
            //... ...
        }); 
    });
});

這樣寫法就有很大的不方便,於是我們就引入了CasperJS

2.CasperJS

2.1 安裝

npm i casperjs --save-dev

為方便使用也可以加入到環境變數中

2.2 使用

  • 示例demo:casper-test.js–開啟網頁截圖
var casper = require('casper').create();
casper.start();
casper.thenOpen('http://www.baidu.com/', function () {
    casper.captureSelector('baidu.png', 'html');
});
casper.run();

執行命令如下

casperjs casper-test.js
  • 示例demo:casper-test2.js–操作DOM,訪問網頁
var casper = require('casper').create();
var links;

function getLinks() {
// Scrape the links from top-right nav of the website
    var links = document.querySelectorAll('ul.navigation li a');
    return Array.prototype.map.call(links, function (e) {
        return e.getAttribute('href')
    });
}
// Opens casperjs homepage
casper.start('http://casperjs.org/');

casper.then(function () {
    links = this.evaluate(getLinks);
});

casper.run(function () {
    for(var i in links) {
        console.log(links[i]);
    }
    casper.done();
});

執行命令類比同上

  • 示例demo:casper-test3.js–單元測試
function Cow() {
    this.mowed = false;
    this.moo = function moo() {
        this.mowed = true; // mootable state: don't do that at home
        return 'moo!';
    };
}

casper.test.begin('Cow can moo', 2, function suite(test) {
    var cow = new Cow();
    test.assertEquals(cow.moo(), 'moo!');
    test.assert(cow.mowed);
    test.done();
});

執行命令

casperjs test casper-test3.js

結果是:

Test file: casper-test3.js
# Cow can moo
PASS Subject equals the expected value
PASS Subject is strictly true
PASS Cow can moo (2 tests)
PASS 2 tests executed in 0.031s, 2 passed, 0 failed, 0 dubious, 0 skipped.
  • 示例demo:casper-test4.js–瀏覽器測試
casper.test.begin('Google search retrieves 10 or more results', 5, function suite(test) {
    casper.start("http://www.google.fr/", function() {
        test.assertTitle("Google", "google homepage title is the one expected");
        test.assertExists('form[action="/search"]', "main form is found");
        this.fill('form[action="/search"]', {
            q: "casperjs"
        }, true);
    });

    casper.then(function() {
        test.assertTitle("casperjs - Recherche Google", "google title is ok");
        test.assertUrlMatch(/q=casperjs/, "search term has been submitted");
        test.assertEval(function() {
            return __utils__.findAll("h3.r").length >= 10;
        }, "google search for \"casperjs\" retrieves 10 or more results");
    });

    casper.run(function() {
        test.done();
    });
});

執行命令如demo3類比

3.PhantomJs+CasperJs

實現非同步操作

var casper = require('casper').create(); //新建一個頁面

casper.start(url1); //新增第一個URL
casper.thenOpen(url2); //新增第二個URL,依次類推
casper.thenOpen(url3);
casper.thenOpen(url4);

casper.run(); //開始導航

demo(casper-phantomjs.js)如下–一次訪問三十幾個url:

var fs = require('fs');
var casper = require('casper').create();
phantom.outputEncoding = "gbk"; //解決中文亂碼

var filePath = "url-02.txt";
var content = fs.read(filePath);
var urlArr = content.split('\n');
casper.start();
for (var i = 0; i < urlArr.length; i++) {
    casper.thenOpen(urlArr[i], function() {
        this.echo('Page title: ' + this.getTitle());
    });
}
casper.run();
// phantom.exit();

執行命令

casperjs casper-phantomjs.js

相關推薦

前端自動化測試工具PhantomJS+CasperJS結合使用教程

下面的安裝測試基於window系統(win10) 1.PhantomJS PhantomJS 是一個基於 WebKit 的伺服器端JavaScript API,它全面支援web而不需瀏覽器支援,其快速,原生支援各種Web標準: DOM 處理, C

nightwatch-前端自動化測試工具安裝

cer als 開始 btn RoCE 2.4 tps lob 調試 最近再弄這個前端自動化測試工具,剛開始弄了幾天,目前為止遇到很多坑,光是安裝就費了不少時間,記錄一下,以便自己忘記。 這裏是它的官網,目前沒找到中文版的官網,全英文,對我這個英語渣來說有點難理解。 一、

基於angularJS的前端自動化測試工具Protractor快速入門

1.官網 2.簡介 Protractor是一個為Angular和AngularJS應用程式而生的端對端的測試框架,Protractor就像使用者一樣在真實的瀏覽器中去互動並執行你的測試程式。 (1)就像一個使用者一樣測試: Protractor是基於WebDrive

前端自動化測試工具--使用karma進行javascript單元測試

前面我寫了一篇部落格是《前端自動化測試工具PhantomJS+CasperJS結合使用教程》其中使用CasperJS不僅可以進行單元測試,還可以進行瀏覽器測試,是個很不錯的工具,今天介紹的工具是Karma+Jasmine+PhantomJS組合的前端javasc

自動化測試工具:Selenium 無頭瀏覽器:PhantomJS

Ajax只是一個載入技術 selenium是可以通過pycharm自動匯入模組的 然後把檔案複製到scripts目錄下,在把下載的路徑設定成環境變數就可以使用了 面試的時候直接說自己會自動化測試工具、無頭瀏覽器去爬取動態載入頁面、js分頁技術、ajax記載技

iOS自動化測試工具Appium在mac上安裝和使用教程

原文http://www.jianshu.com/u/770cb5983e6d 本文只適用於MAC下測試iOS應用 image.png 接下來就是配置Appium的環境,這篇文章講的很詳細,同樣適用目前的1.6.5版本.大家可以去按步執行一下.(如果這個過程中出現任何問題,請點選這裡),因為我們已經

自動化測試工具TW報錯及解決方法

ima -1 需要 1.2 使用 policy 報錯 span 技術 自動化測試工具TestWriter使用時遇到的環境配置問題及解決方法如下,歡迎大家一起溝通交流~ 1.1 TW環境 1.1.1 Agent無法連接至服務器 1) 如果Agent與服務端不在一個網段,需要

推薦五款Android 應用的自動化測試工具

height .com 遍歷 瀏覽器 準備 pro 模擬器 ive ron 如今自動化測試已經應用到每天的測試中。這不足為奇,因為自動化測試在測試過程中節約了時間,還能避免包括人為因素造成的測試錯誤和遺漏。 自動化測試工具選擇很多。一些是開源的,一些非常貴。一些自動化工具

WebDriver自動化測試工具(1)---C#環境搭建

quit 打開百度 asp.net ace chrome color 根路徑 var image Webdriver是一個前端自動化測試工具,可以模擬用戶點擊鏈接,填寫表單,點擊按鈕等操作,下面介紹其使用 一.下載WebdriverC#類庫以及對應瀏覽器驅動 http:

生菜自動化測試工具介紹

aid net 使用方法 麻煩 後來 mar 主體 幫助 穩定性測試 工具簡介: 這是一款實現操作系統性能、功能、穩定性測試自動化的工具。從測試工具的下載、安裝、配置、測試、發送測試結果到郵箱完全實現自動化。 設計初衷: 開始做性能測試時,需要自己手動安裝、配置、執行測

前端自動化構建工具-gulp

出現 ssa uglify 提醒 連接 變化 監聽 前端 復雜 gulp 和grunt這兩個是我知道的自動構建工具,但是說實話都沒在項目中用過,不太清楚自動化構建是什麽意思, 1、grunt和gulp有什麽相同點和不同點?   (1)、易於使用:采用代碼優於配置策略,gul

前端自動化測試之UI Recorder(一、介紹)

而且 行為 文件上傳 語言 系統 nod clas 調用 開發 UI Recorder是一款零成本的整體自動化測試解決方案,一次自測等於多次測試,測一個瀏覽器等於測多個瀏覽器! 支持所有用戶行為: 鍵盤事件, 鼠標事件, alert, 文件上傳, 拖放, svg, sha

前端自動化測試之UI RECORDER(二、PC錄制)

啟動服務 域名 run ports shadow 科學 兼容 webp htm PC錄制教程 準備工作: NodeJs環境 請自行先安裝好nodejs環境,在命令行執行node -v命令成功說明已經安裝成功 Chrome瀏覽器 JAVA環境 UI Recorder We

自動化測試工具selenium的使用

img cnblogs 原創 font strong 自動化測試 ges mage src 尊重博客園原創精神,請勿轉載! 1.自動化測試的前提 自動化測試工具selenium的使用

Apache壓力(並發)測試工具ab的使用教程收集

ros 格式 單位 需要 程序 () ont pat 此外 說明:用ab的好處,在處理多並發的情況下不用自己寫線程模擬。 官網: http://httpd.apache.org/(Apache服務器) http://httpd.apache.org/docs/2.0/

前端自動化構建工具Gulp簡單入門

margin 構建工具 function col 處理 .com order lis web 昨天聽同事分享了Gulp的一些簡單使用,決定自己也試一試。 一、安裝   gulp是基於nodejs的,所以要先下載安裝node(直接搜node,在官網下載就好了)   1、全局安

QuickTester自動化測試工具

自動化測試工具 軟件測試 QuickTester(以下簡稱QT)是AI測試工廠內部孵化的一款自動化測試工具產品。QT是同時支持Win32,Web以及Android自動化測試工具,能夠用於創建功能和回歸測試。它自動捕獲、驗證和重放用戶的交互行為,將繁重的重復性測試工作通過自動化手段實現,極大的提升了測試

基於jest和puppeteer的前端自動化測試實戰

功能模塊 adl bee 不用 devtools face 兼容 選擇 單元 前端測試現狀 經常聽到後端同學說“單元測試”,前端寫過測試用例的有多少?答案是:並不多,為什麽呢?兩個主要原因 1、前端屬於GUI軟件,瀏覽器眾多,兼容問題讓人頭大,用

自動化測試工具整理

其他 ner 自動化 load man 測試 sel qtp 自動 自動化測試包含多種,如Web自動化、手機自動化等: Web自動化測試工具:selenium、QTP。 性能自動化測試工具:loadrunner、jmeter。 接口自動化測試工具:SoapUI、

前端自動化構建工具

urn 自身 合並文件 limit ase 有效 www. javascrip 路徑配置 全局安裝是把包安裝在Node安裝目錄下的node_modules文件夾中,一般在 \Users\用戶名\AppData\Roaming\ 目錄下,可以使用npm root -g查看全局