e2e 自動化集成測試 架構 實例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (一) 京東 商品搜索


  之前有發布一篇文章“e2e 自動化集成測試 環境搭建 Node.js Selenium WebDriverIO Mocha Node-Inspector”, 主要是講了,如何搭建環境, 其中開發環境使用的是微軟的Visual Studio, 使用之后, 我發現,其它並不怎么好用, 發面收費版的WebStorm對於開發Node.js其實是更為方便。 建議使用WebStorm來作為開發環境。 可以試用30天,當然你可以獲得License, 方法你懂的。。。

前言

Node.js是開源的,基於Javascript,跨平台,高效,且提供豐富的資源的開放平台, 使用它不僅僅可以開發出高性能高並發的系統, 同時可以使用它,可以替代Load Runner, JMeter等自行化測試工具, Load Runer,收費,且不易使用。如有網頁調整,其測試腳本也需要調整。 對於JMeter,對於初學者來說, 由其是對黑盒測試來說,使用它來做系統級的自動化測試是,學習成本非常高, 且不易使用。

Selenium服務,

也就是我們運行的 java -jar Selenium-server-standalone-2.42.2.jar, 這個服務需要一直開着,它會去調用我們在Path環境變量下的瀏覽器的驅動程序chromedriver.exe,或是其它的如IE

WebDriverIO 模塊

我們可以使用WebDriverIO作為Selenium服務的客戶端, 可以給該服務發送各種瀏覽器的操作指令。大家可以看控制台Selenium輸出的日志記錄。

Mocha 測試框架

這個類似於Nunit Framework, 一樣, 都通一些測試步驟。

創建項目

1,創建項目

 

確定,配置結束

2, 安裝WebdriverIo 框架

3,京東商品搜索測試

    創建js文件D:\Projects\NodeJs\JD_Nodejs_e2e_Sample\TestCase\JD_Product_Search_TestCase.js, 內容如下:

/**
* Created by Administrator on 10/22/2014.
*/
var assert = require('assert');
var webdriverjs = require('webdriverio');
var browser = {};
describe('JD Product Search', function () {
this.timeout(99999999);

before(function (done) {

browser = webdriverjs.remote({ desiredCapabilities: { browserName: 'chrome', IsJavaScriptEnabled: true } });
browser.init(done);
});

it('Product Search Check', function (done) {
try {
console.log('Begin: Product Search Check');

browser
.url('http://jd.com')
.setValue('#key', '諾基亞(NOKIA) Lumia 1520 3G手機(黃色) WCDMA/GSM')
.pause(5000)
.click('input[class="button"]')
.pause(3000)
.getText('.J_1006105', function(err, text){

if(err) throw err;
console.log('得到結果' +text);
assert(text.indexOf('2899.00') > -1)

done();
})
;

}
catch (e) {
console.log(e);
}

});

after(function (done) {
done();
});
});

這些url, setValue, pause, click, getText。。。都是一些我們真實如何去操作一個網頁的步驟。 詳細可以參考官網: http://webdriver.io/api.html

這些方法, 引號部分,就是對應jQuery的選擇器selector 參考http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp, 對此, webdriverIO也有一些解釋和不支持如 http://webdriver.io/guide/usage/selectors.html, contains不支持, first也不支持, 不過在后續的升級中會增加。

4, 執行效果:

方法1,是可以按照上面的方法來執行你的測試腳本。

方法2,手動,打入  mocha testcase/JD_Product_Search_TestCase,如下圖

好了這個例子結果, 本來想第一例子,使用JD 的登錄,如下 :

it('Login Check', function (done) {
try {
console.log('Begin: Login Check');

browser
.url('https://passport.jd.com/new/login.aspx')
.setValue('#loginname', 'username')
.setValue('#nloginpwd', 'password')
.click('#loginsubmit')
.pause(2000)
.getText('#loginbar', function(err, text){

if(err) throw err;
console.log('得到結果' +text);
assert(text.indexOf('xinereimzhi') > -1)

done();
})
;

}

 

catch (e) {
console.log(e);
}

});

 


但是結果發現, 只能登錄一次, 再次的話就要輸入 驗證碼, 關於驗證碼的識別 請看第二篇文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM