以前有發佈一篇文章「e2e 自動化集成測試 環境搭建 Node.js Selenium WebDriverIO Mocha Node-Inspector」, 主要是講了,如何搭建環境, 其中開發環境使用的是微軟的Visual Studio, 使用以後, 我發現,其它並不怎麼好用, 發麪收費版的WebStorm對於開發Node.js實際上是更爲方便。 建議使用WebStorm來做爲開發環境。 能夠試用30天,固然你能夠得到License, 方法你懂的。。。html
Node.js是開源的,基於Javascript,跨平臺,高效,且提供豐富的資源的開放平臺, 使用它不單單能夠開發出高性能高併發的系統, 同時可使用它,能夠替代Load Runner, JMeter等自行化測試工具, Load Runer,收費,且不易使用。若有網頁調整,其測試腳本也須要調整。 對於JMeter,對於初學者來講, 由其是對黑盒測試來講,使用它來作系統級的自動化測試是,學習成本很是高, 且不易使用。java
Selenium服務,jquery
也就是咱們運行的 java -jar Selenium-server-standalone-2.42.2.jar, 這個服務須要一直開着,它會去調用咱們在Path環境變量下的瀏覽器的驅動程序chromedriver.exe,或是其它的如IEweb
WebDriverIO 模塊chrome
咱們可使用WebDriverIO做爲Selenium服務的客戶端, 能夠給該服務發送各類瀏覽器的操做指令。你們能夠看控制檯Selenium輸出的日誌記錄。api
Mocha 測試框架瀏覽器
這個相似於Nunit Framework, 同樣, 都通一些測試步驟。併發
1,建立項目框架
肯定,配置結束ide
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);
}
});
可是結果發現, 只能登陸一次, 再次的話就要輸入 驗證碼, 關於驗證碼的識別 請看第二篇文章