摘要:建立的配置信息。在此我們安裝的以便使用進行測試。如果您在搭建過程中遇到困難,您可以從獲取在下已經(jīng)搭建好的接下來接下來就是專心寫測試用例了,距離成功越來越近了不過今天就到這里結(jié)束,我們下一章見下一篇搭建自己的前端自動化測試腳手架三
上一篇:搭建自己的前端自動化測試腳手架(一)
By LancerComet at 18:38, 2016.07.17. 歡迎轉(zhuǎn)載,轉(zhuǎn)載時還請保留作者署名。
嗨,歡迎回來!(???)
在這一章我們將安裝之前提到的 Selenium 與 Nightwatch 然后并正確配置它倆,讓它倆能正常的運 ♂ 作起來,趕緊搞 ♂ 起!
不過首先 ……首先要安裝 Java 7 或更高 ,并且 java 命令可正常執(zhí)行才能測試噢~~ 最簡單的判斷方法就是打開自己的終端,輸入 java 并回車,看看是不是有 Java 運行。如果有命令不存在之類的提示,請重新安裝 Java 運行環(huán)境 (???)
Node.JS , 而且要確保 npm 命令可用,我想應該其實不用提醒的 ~
我們來找個地方新建一個目錄,起名為 "my-test-toolkit",然后在目錄內(nèi)使用終端運行 npm init -y 生成項目配置文件 package.json。
然后我們將安裝 Selenium 與 Nightwatch。
安裝 selenium-standalone:
npm install selenium-standalone --save-dev
安裝 Nightwatch:
npm install nightwatch --save-dev
3. 項目配置還記得嗎?上一章提到我們將使用 selenium-standalone 而不是直接手動配置 Selenium 喔!
So Easy 不是嗎!不過接下來的配置可能要花點功夫,但是也不是很麻煩啦,一步步來還是很容易的~
我們先開始配置 Nightwatch,之前提到這是一款 Test Runner 來著,它負責讀取我們的測試腳本,為我們提供 API 來操作瀏覽器,幫我們控制 Selenium。
一. 配置 Nightwatch
首先,在項目根目錄建立文件 "nightwatch.json",這個文件用來存放 Nightwatch 的配置信息。創(chuàng)建完畢之后,在文件內(nèi)寫入以下內(nèi)容:
{ "src_folders": ["tests"], "output_folder": "reports", "custom_commands_path": "", "custom_assertions_path": "", "page_objects_path": "", "globals_path": "", "selenium": { "start_process": true, "server_path": "", "log_path": "", "host": "127.0.0.1", "port": 4444, "cli_args": { "webdriver.chrome.driver": "" } }, "test_settings": { "default": { "launch_url": "http://localhost", "selenium_port": 4444, "selenium_host": "localhost", "silent": true, "screenshots": { "enabled": false, "path": "" }, "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } }, "chrome" : { "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } } } }
nightwatch.json 的文件名是 不可以 修改的,因為 Nightwatch 每次啟動的時候都是從它讀取配置喔!這里的配置項很多,不過先不管它,我們接著創(chuàng)建文件。如果您希望查看 Nightwatch 的詳細配置,請點 這里。
接著在項目根目錄下創(chuàng)建文件 "nightwatch.conf.js" ,同樣此文件名也是不可以修改的,因為 Nightwatch 每次啟動也會從它這里讀取配置喔~ (′?_?`)
創(chuàng)建完畢后,打開文件,并寫入如下內(nèi)容:
const path = require("path") module.exports = (function (settings) { return settings; })(require("./nightwatch.json")) /* * Nightwatch 會從 nightwatch.json 中讀取配置。 * 不過如果存在 nightwatch.conf.js,將會變?yōu)槭紫葟暮笳咧凶x取配置。 * nightwatch.conf.js 存在的意義是使用 JavaScript 動態(tài)生成配置信息。 * 如果配置信息是不需要代碼修改的,直接使用 nightwatch.json 就可以啦。 */
再次在項目根目錄建立文件 "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" }, ... }
以后每次運行測試只要在項目根目錄中執(zhí)行 npm start 就好了!(???)
Nightwatch 的配置暫時告一段落(其實馬上就會回來………),接下來我們來處理 Selenium.
二. 配置 Selenium
Selenium 是自動化測試環(huán)境,它提供了測試服務器、啟動瀏覽器、網(wǎng)頁自動操作等功能,同時暴露 API 給 Nightwatch 供我們使用。
我們接下來將要告訴 Nightwatch 我們的 Selenium 安裝在哪里,啟動瀏覽器的 Driver 程序在哪里,然后建立 Selenium 的安裝腳本與手工啟動腳本,以便不時之需 ~~
Driver 是讓 Selenium 打開系統(tǒng)上已安裝的瀏覽器的程序。
1. 建立 Selenium 的配置信息。
在項目根目錄下建立文件夾 "build",并在其中創(chuàng)建文件 "selenium-conf.js",并寫入如下信息:
const process = require("process") module.exports = { // Selenium 的版本配置信息。請在下方鏈接查詢最新版本。升級版本只需修改版本號即可。 // https://selenium-release.storage.googleapis.com/index.html selenium: { version: "2.53.1", baseURL: "https://selenium-release.storage.googleapis.com" }, // Driver 用來啟動系統(tǒng)中安裝的瀏覽器,Selenium 默認使用 Firefox,如果不需要使用其他瀏覽器,則不需要額外安裝 Driver。 // 在此我們安裝 Chrome 的 driver 以便使用 Chrome 進行測試。 driver: { chrome: { // Chrome 瀏覽器啟動 Driver,請在下方鏈接查詢最新版本。 // https://chromedriver.storage.googleapis.com/index.html version: "2.22", arch: process.arch, baseURL: "https://chromedriver.storage.googleapis.com" } } }
本配置信息包含 Selenium 本體配置與 Driver 配置。我們將在稍后動態(tài)載入這些配置。
本文件的目的是為了更好管理 Selenium 的版本。
2. 告訴 Nightwatch,我的 Selenium 與 Driver 在哪里。
再次打開項目根目錄下的 "nightwatch.conf.js" 文件,并這樣編輯:
const seleniumConfig = require("./build/selenium-conf") const path = require("path") module.exports = (function (settings) { // 告訴 Nightwatch 我的 Selenium 在哪里。 settings.selenium.server_path = `${path.resolve()}/node_modules/selenium-standalone/.selenium/selenium-server/${seleniumConfig.selenium.version}-server.jar` // 設置 Chrome Driver, 讓 Selenium 有打開 Chrome 瀏覽器的能力。 settings.selenium.cli_args["webdriver.chrome.driver"] = `${path.resolve()}/node_modules/selenium-standalone/.selenium/chromedriver/${seleniumConfig.driver.chrome.version}-${seleniumConfig.driver.chrome.arch}-chromedriver` return settings; })(require("./nightwatch.json"))
我們新加了兩行配置,它們的作用如注釋所示。
同樣的,如果您希望查看更多的配置項,請點擊 這里。
3. 建立 Selenium 安裝腳本,一鍵安裝 Selenium。
還記得上一章我們提過 selenium-standalone 只是用來安裝和管理 Selenium 的工具么?所以現(xiàn)在是時候用它來安裝 Selenium 了。我們將通過調(diào)取 selenium-standalone 的內(nèi)置方法來實現(xiàn)自動安裝。在 "build" 文件夾中建立文件 "selenium-setup.js",并寫入如下信息:
const selenium = require("selenium-standalone") const seleniumConfig = require("./selenium-conf.js") selenium.install({ version: seleniumConfig.selenium.version, baseURL: seleniumConfig.selenium.baseURL, drivers: seleniumConfig.driver, logger: function (message) { console.log(message) }, progressCb: function (totalLength, progressLength, chunkLength) {} }, function (err) { if (err) throw new Error(`Selenium 安裝錯誤: ${err}`) console.log("Selenium 安裝完成.") })
同樣為了方便,我們將安裝命令寫入 npm scripts 中:
{ ... "scripts": { "start": "node ./startup.js", "selenium-setup": "node ./build/selenium-setup.js" }, ... }
然后在項目根目錄執(zhí)行 npm run selenium-setup 安裝 Selenium.
當提示安裝完成后,一切就緒!(???)
Selenium 與其 Driver 會安裝到 "node_modules/selenium-standalone/.selenium" 中。
4. 想要手工啟動 Selenium?
默認情況下,Selenium 是由 Nightwatch 啟動的,不需要手工干預,不過如果想要手工啟動當然是可以的啦。
在 build 文件夾中建立文件 "selenium-start.js",并寫入如下信息:
const selenium = require("selenium-standalone") const seleniumConfig = require("./selenium-conf.js") selenium.start({ drivers: seleniumConfig.driver }, function (err, child) { if (err) throw new Error(`Selenium 啟動失敗: ${err}`) console.log(`Selenium 已手工啟動,進程 PID: ${child.pid}`) console.log("當不再需要運行 Selenium 時可關(guān)閉此 PID 進程.") })
然后同樣添加啟動命令至 npm scripts 中:
{ ... "scripts": { "start": "node ./startup.js", "selenium-setup": "node ./build/selenium-setup.js", "selenium-start": "node ./build/selenium-start.js" }, ... }
以后使用命令 npm run selenium-start 就可以手工啟動 Selenium 了。
搭建完了!至此,我們的配置與安裝工作已經(jīng)完成,項目結(jié)構(gòu)應該為:
> | -- build | | -- selenium-conf.js # Selenium 版本信息配置。 | | -- selenium-setup.js # Selenium 安裝命令腳本。 | | -- selenium-start.js # Selenium 啟動命令腳本。 | | -- nightwatch.conf.js # Nightwatch 動態(tài)配置文件。 | -- nightwatch.json # Nightwatch 配置文件。 | -- package.json # 項目信息配置文件。 | -- startup.js # 測試啟動入口文件。
“不過我好像看到 "nightwatch.json" 的配置很復雜,而我們確沒怎么動它?”
嗯~~ 到目前位置確實沒有太多需要改動的,不過還是要注意一個配置項:
請注意 "desiredCapabilities" 下的 "browserName" 項,這是測試時將使用的瀏覽器,您可以修改為 chrome、internet explorer、phantomjs,本文在介紹時只安裝了 Chrome 的 Driver,如果您需要使用其他瀏覽器,要安裝相應的 Driver 才可以正常使用。
默認瀏覽器為 Firefox,如果您使用 Firefox 的話,不需要額外進行 Driver 的配置。
所以,如果您需要使用 Chrome 的話請將 "browserName" 修改為 "chrome" 喔!
接下來 ……Driver 的文檔可參考這里。
如果您在搭建過程中遇到困難,您可以從 Github 獲取在下已經(jīng)搭建好的 Start Kit.
接下來就是專心寫測試用例了,距離成功越來越近了!不過今天就到這里結(jié)束,我們下一章見!?(? ???ω??? ?)?
下一篇:搭建自己的前端自動化測試腳手架(三)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/8722.html
摘要:還可以自動完成單元測試的配置,工具選型為準備出發(fā)有了以上的初步了解,我們就可以準備著手搭建我們自己的測試環(huán)境了,讓我們短暫休息一下,下一章見下一篇搭建自己的前端自動化測試腳手架二 搭建自己的前端自動化測試腳手架(一) LancerComet at 17:55, 2016.07.17.歡迎轉(zhuǎn)載,轉(zhuǎn)載時還請保留作者署名。 隨著前端項目規(guī)模的日益膨脹,自動化測試越來越受到廣大前端與測試朋友關(guān)...
摘要:如果您在進行模擬鼠標的測試,您的鼠標指針可能會干擾您的測試,因此建議運行測試后將您的指針移動至屏幕外部,以避免干擾到瀏覽器測試。 上一篇:搭建自己的前端自動化測試腳手架(二)By LancerComet at 23:47, 2016.07.22. 歡迎轉(zhuǎn)載,轉(zhuǎn)載時還請保留作者署名。 這是最后一章了!(???)之前我們配置好了我們的腳手架工具,現(xiàn)在可以編寫測試用例了! 開始編寫測試用例 ...
摘要:更多資源請文章轉(zhuǎn)自月份前端資源分享的作用數(shù)組元素隨機化排序算法實現(xiàn)學習筆記數(shù)組隨機排序個變態(tài)題解析上個變態(tài)題解析下中的數(shù)字前端開發(fā)筆記本過目不忘正則表達式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛?cè)腴T的前端工程師的前后端交互指南物聯(lián)網(wǎng)世界的 更多資源請Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/jsfr...
摘要:從到再到搭建編寫構(gòu)建一個前端項目選擇現(xiàn)成的項目模板還是自己搭建項目骨架搭建一個前端項目的方式有兩種選擇現(xiàn)成的項目模板自己搭建項目骨架。使用版本控制系統(tǒng)管理源代碼項目搭建好后,需要一個版本控制系統(tǒng)來管理源代碼。 從 0 到 1 再到 100, 搭建、編寫、構(gòu)建一個前端項目 1. 選擇現(xiàn)成的項目模板還是自己搭建項目骨架 搭建一個前端項目的方式有兩種:選擇現(xiàn)成的項目模板、自己搭建項目骨架。 ...
閱讀 2835·2021-11-19 09:40
閱讀 3695·2021-11-15 18:10
閱讀 3280·2021-11-11 16:55
閱讀 1230·2021-09-28 09:36
閱讀 1646·2021-09-22 15:52
閱讀 3367·2019-08-30 14:06
閱讀 1159·2019-08-29 13:29
閱讀 2306·2019-08-26 17:04