WEB UI自動化測試

我們將使用?Selenium?與?Nightwatch?搭建我們的測試腳手架载萌。

? ? ?Selenium?是一款 Web 的自動化測試環(huán)境搏予,它將幫我們搭建好測試環(huán)境慎玖,調(diào)取系統(tǒng)安裝的瀏覽器句旱,在瀏覽器里執(zhí)行一切自動化行為;

? ? Nightwatch?是一款 Test Runner砰盐,可以簡單理解為前者的控制軟件,它將提供一系列接口供我們編寫測試案例坑律,同時也是與現(xiàn)有前端項目結(jié)合的橋梁岩梳。只需使用 Javascript 和 CSS 選擇器,不需要初始化其他對象和類脾歇,您只需要編寫測試規(guī)范蒋腮。內(nèi)置命令行測試運行器,使您能夠運行整體測試藕各,分組測試或者單個測試池摧。

環(huán)境準備

首先要安裝?Java 7 或更高?,并且?java?命令可正常執(zhí)行才能測試噢~~ 最簡單的判斷方法就是打開自己的終端激况,輸入?java?并回車作彤,看看是不是有 Java 運行。如果有命令不存在之類的提示乌逐,請重新安裝 Java 運行環(huán)境 (???)

Selenium 是一個直接運行在瀏覽器中的非常流行的綜合測試工具集竭讳, 最初為Java?語言編寫, 現(xiàn)在已經(jīng)支持許多語言浙踢。

概述

總的來說绢慢,核心是使用selenium和driver操作瀏覽器,通過 nightwatch做斷言洛波。

安裝工具

然后我們將安裝 Selenium 與 Nightwatch胰舆。

安裝 selenium-standalone:

? ? ? npm install selenium-standalone --save-dev

安裝 Nightwatch:

? ? ? ? ? ? ? npm install nightwatch --save-dev

項目配置

一. 配置 Nightwatch

首先骚露,在項目根目錄建立文件 "nightwatch.json",這個文件用來存放 Nightwatch 的配置信息

nightwatch.json 的文件名是?不可以?修改的缚窿,因為 Nightwatch 每次啟動的時候都是從它讀取配置喔棘幸!這里的配置項很多,不過先不管它倦零,我們接著創(chuàng)建文件误续。

2. 接著在項目根目錄下創(chuàng)建文件?"nightwatch.conf.js"?,同樣此文件名也是不可以修改的扫茅,因為 Nightwatch 每次啟動也會從它這里讀取配置喔~ (′?_?`)

3. 再次在項目根目錄建立文件?"startup.js"蹋嵌,然后在文件內(nèi)部寫入:

require('nightwatch/bin/runner.js')

這個文件就是我們測試的入口文件,以后我們要執(zhí)行測試就要運行這個文件诞帐,命令為?node ./startup欣尼。入口文件的名字是可以按照喜好更改的,只要運行它就好啦停蕉。不過每次輸入?node ./startup?太麻煩了愕鼓,所以我們將這條命令寫入 npm scripts 中 ~~~ 打開?"package.json",在 JSON 對象中建立?"script"?屬性慧起,并寫入內(nèi)容:

{

? ? ...

? ? "scripts": {

? ? ? ? "start": "node ./startup.js"

? ? },

? ? ...

}

二. 配置 Selenium

Selenium?是自動化測試環(huán)境菇晃,它提供了測試服務器、啟動瀏覽器蚓挤、網(wǎng)頁自動操作等功能磺送,同時暴露 API 給 Nightwatch 供我們使用。

1. 建立 Selenium 的配置信息灿意。

在項目根目錄下建立文件夾?"build"估灿,并在其中創(chuàng)建文件 "selenium-conf.js"

2. 告訴 Nightwatch,我的 Selenium 與 Driver 在哪里缤剧。

再次打開項目根目錄下的?"nightwatch.conf.js"?文件

創(chuàng)建目錄存放測試用例

在項目根目錄新建一個名為 "tests" 的目錄馅袁,然后這里就用來存放我們即將編寫的測試用例文件。

那么這個文件夾能不能指向到其他地方去呢荒辕?當然可以汗销,不過要修改一個小地方。

您可以在目錄中存放多個測試用例文件抵窒,且命名隨意弛针,Nightwatch 將讀取目錄中所有的 JS 文件,如果符合測試用例格式李皇,將會自動執(zhí)行削茁。

>

| -- build|? ? ? | -- selenium-conf.js? ? ? ? # Selenium 版本信息配置。|? ? ? | -- selenium-setup.js? ? ? # Selenium 安裝命令腳本。|? ? ? | -- selenium-start.js? ? ? # Selenium 啟動命令腳本付材。| -- reports? ? ? ? #輸出測試報告

| -- tests? ? ? ? #測試用例| -- nightwatch.conf.js? ? ? ? ? ? # Nightwatch 動態(tài)配置文件朦拖。| -- nightwatch.json? ? ? ? ? ? ? ? # Nightwatch 配置文件。| -- package.json? ? ? ? ? ? ? ? ? # 項目信息配置文件厌衔。| -- startup.js? ? ? ? ? ? ? ? ? ? # 測試啟動入口文件。

基本api

http://nightwatchjs.org/api

client 是代碼運行時 Nightwatch 提供的對象捍岳,所有對瀏覽器進行的操作都將使用此對象調(diào)取富寿,比如 client.click("CSS Selector")、client.getCookie(function () {...})锣夹,我們第一章說過的 "可以簡單理解為 Selenium 的控制軟件" 就是通過它體現(xiàn)的喔页徐!

Expect是0.7版本的時候引入的一種BDD(行為驅(qū)動測試)風格的接口,也是為了執(zhí)行斷言银萍,使用鏈式的語法变勇,和直接的斷言相比,expect讀起來更加語義化贴唇,就像寫句子(但是單詞之間用的.連接的)

Assert這部分包含兩套有同樣方法的方法庫:assert和verify,其中搀绣,若是當前執(zhí)行的斷言沒有成功,assert會停止執(zhí)行剩余的斷言并立即結(jié)束戳气,verify會打印錯誤日志然后繼續(xù)淡定的執(zhí)行接下來的斷言链患。

Commands用來在頁面上執(zhí)行一些命令比如點擊、關(guān)掉當前窗口瓶您、清除cookie麻捻、獲取到某元素的值等。

禁用測試

要阻止某個模塊執(zhí)行測試呀袱, 只需要設置 disable 屬性為true :

module.exports = {

? '@disabled': true, // This will prevent the test module from running.

? 'sample test': function (client) {

? ? // test code

? }

};

禁用單獨測試用例?

禁用模塊中單獨的測試用例贸毕,目前還不支持。 但是有一個變通方法夜赵, 將測試方法轉(zhuǎn)化為字符串明棍,Nightwatch 就會忽略它。

module.exports = {

'sample test': ''+function (client) {

? ? // test code

? }

};

當你想要停止測試時注意總是要調(diào)用 end() 方法油吭,如此 selenium 會話才會正確的停止击蹲。

Nightwatch 為測試提供了 before/after, beforeEach/afterEach 鉤子。?

before 和 after 鉤子會在每個測試套件運行前后執(zhí)行婉宰。beforeEach 和 afterEach 則會在每個測試用例(測試步驟)執(zhí)行前后執(zhí)行歌豺。?

所有鉤子函數(shù)都接收一個 NightWatch 實例做為參數(shù)。?

Example:

before(), beforeEach(), “step one”, afterEach(), beforeEach(), “step two”, afterEach(), after()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末心包,一起剝皮案震驚了整個濱河市类咧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖痕惋,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件区宇,死亡現(xiàn)場離奇詭異,居然都是意外死亡值戳,警方通過查閱死者的電腦和手機议谷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堕虹,“玉大人卧晓,你說我怎么就攤上這事「袄蹋” “怎么了逼裆?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赦政。 經(jīng)常有香客問我胜宇,道長,這世上最難降的妖魔是什么恢着? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任桐愉,我火速辦了婚禮,結(jié)果婚禮上然评,老公的妹妹穿的比我還像新娘仅财。我一直安慰自己,他們只是感情好碗淌,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布盏求。 她就那樣靜靜地躺著,像睡著了一般亿眠。 火紅的嫁衣襯著肌膚如雪碎罚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天纳像,我揣著相機與錄音荆烈,去河邊找鬼。 笑死竟趾,一個胖子當著我的面吹牛憔购,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岔帽,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼玫鸟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了犀勒?” 一聲冷哼從身側(cè)響起屎飘,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤妥曲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钦购,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檐盟,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年押桃,在試婚紗的時候發(fā)現(xiàn)自己被綠了葵萎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡怨规,死狀恐怖陌宿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情波丰,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布舶得,位于F島的核電站掰烟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沐批。R本人自食惡果不足惜纫骑,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望九孩。 院中可真熱鬧先馆,春花似錦、人聲如沸躺彬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宪拥。三九已至仿野,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間她君,已是汗流浹背脚作。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缔刹,地道東北人球涛。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像校镐,于是被迫代替她去往敵國和親亿扁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Web項目的 UI 自動化測試方案 有用的鏈接: 自動化Selenium的Python文檔http://www.j...
    厲鉚兄閱讀 10,997評論 1 42
  • 分享者趙子云灭翔,由于自己之前沒有接觸過UI自動化魏烫,目前公司也還沒有開展這個方向辣苏,所以這次分享也是拓展了自己的知識...
    喵喵喵喵苗啊閱讀 3,038評論 0 6
  • 目前市面上有很多Web UI自動化測試框架,比如WatiN, Selinimu,WebDriver哄褒,還有VS201...
    James黃杰閱讀 1,674評論 0 4
  • 洞見SELENIUM自動化測試 寫在最前面:目前自動化測試并不屬于新鮮的事物稀蟋,或者說自動化測試的各種方法論已經(jīng)層出...
    厲鉚兄閱讀 6,728評論 3 47
  • 沒了多久,我亂想咯呐赡,思想跟著水流了退客。密如麻的緒頭理還亂,解鎖的‘U’滑過链嘀,亮了萌狂,又滅了。來回好幾下怀泊,發(fā)怔茫藏。 ...
    43482ad549bd閱讀 198評論 0 0