Nightwatchjs筆記(1) - 網頁自動化測試使用node.js !
Nightwatch.js是一個使用nodejs開發的E2E網頁自動化測試方案。
因為是使用nodejs,所以擴充性也是不錯的,簡潔的程式碼也容易了解,還有runner可以讓測試以單一或是使用tag或是group跑,挺方便的。
在開始弄髒手之前,必須要先安裝好nodejs與npm。(通常會一起裝好)
新增專案資料夾,並產生package.json管理專案資料與相關套件。
$ npm init
下載nightwatch 模組
$ npm install --save nightwatch
安裝完之後,有幾件事要先做:
- 新增一個資料夾test,底下放置測試腳本。
- 新增一個檔案引入nightwatch runner,大部分是nightwatch.js
require('nightwatch/bin/runner.js');
-新增config檔,nightwatch.con.js
雖然nightwatchjs的網站上將config.json與nightwatch.con.js分開,但也能合在一起。
var selenium = require('selenium-server-standalone-jar');
var chromeDriver = require('chrome-driver-standalone');
var config = {
"src_folders": ["test"],
"output_folder": "reports",
"custom_commands_path": "command",
"custom_assertions_path": "assertions",
"page_objects_path": "page_obj",
"globals_path": "globals/globals.js",
"selenium" : {
"start_process": true,
"server_path": selenium.path,
"log_path": "results",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver" : chromeDriver.path
}
},
"test_settings": {
"default": {
"launch_url": "",
"selenium_port": 4444,
"selenium_host": "localhost",
"silent": true,
"screenshots": {
"enabled": true,
"on_error": true,
"on_failure": true,
"path": "reports/screenshots"
},
"desiredCapabilities": {
"browserName": "chrome"
}
}
}
}
module.exports = (function(settings){
settings.test_workers = false;
return settings;
})(config);
>> 例子 : Google搜尋The Lumineers - Cleopatra
module.exports = {
'go to Youtube': function(browser){
browser.url('https://www.google.com.tw/');
browser.expect.element('#lst-ib').to.be.present;
browser.setValue('#lst-ib', "The Lumineers Cleopatra")
.keys('\uE007');
},
'click first song': function(browser){
browser.expect.element('h3.r > a').to.be.present;
browser.getText('h3.r > a', function(res){
console.log(res.value);
});
browser.click('h3.r > a');
}
}
console 上輸出的測試報告
留言
張貼留言