1. 程式人生 > >nightwatch-前端自動化測試工具安裝

nightwatch-前端自動化測試工具安裝

cer als 開始 btn RoCE 2.4 tps lob 調試

最近再弄這個前端自動化測試工具,剛開始弄了幾天,目前為止遇到很多坑,光是安裝就費了不少時間,記錄一下,以便自己忘記。

技術分享圖片

這裏是它的官網,目前沒找到中文版的官網,全英文,對我這個英語渣來說有點難理解。

一、前言

參考:首先本文主要是參照這篇文章,並加上自己的理解,大家可以看看。

涉及知識:1.一些js知識(本文需要的不是太多);2.nodejs。

基礎環境:1.java:java7以上,可以去官網下載;2.nodejs,版本沒限制,沒有安裝過就直接去官網下載就可以了。3.編輯器(我用的vscode,比較小巧)4.chrome瀏覽器(平時調試什麽的還是喜歡chrome,firefox有些樣式不喜歡)

安裝的時候就是一直點下一步就可以了(我是這麽點的,因為也不知道那些重要,幹脆就都要吧)。

技術分享圖片

查看版本命令:java是 java -version;nodejs是 node -v;

二、搭建項目

1.建立項目

首先創建個文件夾,比如我在F盤創建個nwDemo文件夾,然後輸入

npm init -y

技術分享圖片

然後就創建了一個package.json 的配置文件。

2.安裝 Selenium 與 Nightwatch

首先說明下,我們安裝 Selenium是用selenium-standalone來配置的。

1.所以要先安裝selenium-standalone。

npm install selenium-standalone --save-dev

2.安裝nightwatch

npm install nightwatch --save-dev

技術分享圖片

3.項目配置

1.配置nightwatch

項目文件夾創建nightwatch.json文件,並寫下一下內容:

{
     "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": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } }, "chrome" : { "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } } } }

這些都是一些配置,可以暫時不用理解,如果想知道詳細配置,點這裏查看,全英文哦。

2.接著創建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‘))
/*
 *  Nightwatch 會從 nightwatch.json 中讀取配置。
 *  不過如果存在 nightwatch.conf.js,將會變為首先從後者中讀取配置。
 *  nightwatch.conf.js 存在的意義是使用 JavaScript 動態生成配置信息。
 *  如果配置信息是不需要代碼修改的,直接使用 nightwatch.json 就可以啦。
 */

以上兩個都是基礎配置,文件名不能修改哦。

3.配置 Selenium

1.創建文件 "selenium-conf.js"

不知道大家發現沒有,上面創建nightwatch.conf.js的的時候,裏面第一行我們引用了一個selenium-cong文件,這個就是安裝selenium的一個配置文件。

在nwDemo文件夾裏創建build文件夾,並添加一個selenium-cong.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 用來啟動系統中安裝的瀏覽器,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‘
        }
    }
} 

2.建立 Selenium 安裝腳本,一鍵安裝 Selenium。

上面我們已經安裝過selenium-standalone這個工具了,接下來我們就要用它來安裝Selenium。

在上一步創建的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 安裝完成.‘)
})

為了方便,我們把安裝命令寫到package.json裏,把下面這段命令寫到package.json的scripts裏:

"selenium-setup": "node ./build/selenium-setup.js"

技術分享圖片

3.安裝Selenium

執行 下面命令安裝 Selenium

npm run selenium-setup 

技術分享圖片

3.1.安裝問題

在這一步安裝時經常會遇到一些問題,下面就是我遇到的問題

首先是selenium-server-standalone-2.53.1.jar安裝不上。

技術分享圖片

兩種解決方法:

方法一:去這個 https://selenium-release.storage.googleapis.com/index.html 網址查看最新的版本,我查找的是3.9,把selenium-conf.js裏的selenium的version改成3.9,然後再次執行 npm run selenium-setup 命令。

方法二:按著ctrl去這個網址下載這個文件,手動放到它該在位置。

它應該在的位置是:你的項目文件夾\node_modules\selenium-standalone\.selenium\selenium-server

技術分享圖片

第二個問題安裝chromedriver失敗了,

同樣的解決辦法有兩種。

方法一:首先我們要先知道自己的chrome要用那個版本的,先去點擊 https://chromedriver.storage.googleapis.com/index.html 網址,然後找到LATEST_RELEASE這個文件夾,點擊查看適配自己瀏覽器的版本,我的是2.41,所以把selenium-conf.js裏的chrome的version改成2.41。然後再次執行 npm run selenium-setup 命令。

方法二:同樣的,跟上面的的方法一樣,直接下載,然後放在相應的位置:你的項目文件夾\node_modules\selenium-standalone\.selenium\chromedriver

完成上面的操作後再次執行 npm run selenium-setup 命令看看是否有錯誤

備註:我用的這個編譯器似乎有問題,有時候明明下載下來了,但是識別不了,重啟下編譯器試試,有可能就成功了;可能執行命令後還是報錯,但是你只要看到你的.selenium文件夾和下圖一樣就不用管了,看接下來的操作就可以。

技術分享圖片

4.建立啟動文件

在項目目錄中建立startup.js文件,並寫下一下代碼:

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

這是啟動命令,我們只需要在控制臺輸入 node ./startup 就可以執行,但是我建議用npm命令來執行,所以打開package.json文件,在scripts裏添加:

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

技術分享圖片

以後要開啟測試的時候就直接輸入 npm start 命令就可以了

5.建立測試文件

在項目文件夾裏創建 tests 文件夾,並創建一個 tests.js 文件。(註意這裏的test文件夾對應的是nightwatch.json文件裏的第一項:"src_folders": ["tests"],顧名思義就是放測試文件的文件夾名稱

這裏我要讓它執行一個 打開瀏覽器並登陸bing網站,搜索 "what is microsoft",然後保存成截圖後退出 的操作。

tests.js 寫下:

module.exports = {
    ‘Find the answer.‘: function (client) {
      // 定義 Bing 頁面中的節點.
      const searchInput = ‘#sb_form_q‘
      const searchBtn = ‘#sb_form_go‘
      const question = ‘what is microsoft‘
  
      // 啟動瀏覽器並打開 bing.com.
      client.url(‘http://bing.com‘).maximizeWindow()
  
      // 確保 "body" 和輸入框可以使用.
      client.expect.element(‘body‘).to.be.present
      client.expect.element(searchInput).to.be.visible
      client.pause(2000)  // 稍等兩秒.
  
      // 輸入 "what is microsoft" 然後搜索.
      client.setValue(searchInput, question)
      client.click(searchBtn)
      client.pause(2000)
  
      // 截一張圖然後保存到 "reports/answer.png". 
      client.expect.element(‘body‘).to.be.present
      client.saveScreenshot(‘reports/answers.png‘)
      client.end()
    }
  }

6.開始測試

控制臺執行命令:

npm start

然後就大功告成了!

技術分享圖片

至於tests.js裏的具體那些命令,還是要到官網去看,本文知識粗略的介紹一些nightwatch的安裝過程,現在還在摸索怎麽編寫文檔,因為這裏的坑好多啊,比如我們的頁面有iframe,找iframe裏的標簽找不到這種問題,等我解決了在寫一篇怎麽編寫測試文件的文章吧。

後記:

今天正好看到奇舞周刊公眾號推送了一篇文章:vue-cli 自動化測試 Nightwatch 詳解,也是講nightwatch的,很不錯,大家可以看看,是關於vue裏的nightwatch測試的。話說現在的三大框架我都不會,真的有些落伍了,得趕緊去補補了...

nightwatch-前端自動化測試工具安裝