Nightmare.js 的介紹和安裝
Nightmare 是 Segment 提供的一個高階自動化庫。它是一個很好的冒煙測試自動化選擇,因為它可以執行任何人都可以執行的所有文字輸入、點選和視覺檢查。它使用 Electron 作為無頭瀏覽器執行。在本文中,我們將詳細討論 Nightmare.js 以及 Nightmare.js 的安裝。
Nightmare.js 簡介
Segment 提供了 Nightmare,一個複雜的瀏覽器自動化庫。這個 Nightmare 的目標是模仿使用者活動(例如 goto、type、click 等),而不是使用高度巢狀的回撥,而是為每個指令碼塊公開一些基本方法,並提供一種感覺同步的 API。雖然它最初是為了在沒有 API 的情況下自動化跨網站的操作,但如今它最常用於抓取、UI 測試等。
注意 - 執行 Nightmare 需要 NodeJS 4.x 或更高版本。
Nightmare.js 的安裝
為了測試網站介面,我們嘗試使用了 Nightmare.js,這是一個 JavaScript 瀏覽器自動化庫。
在您的 PC 上使用 Nightmare 比在 Cloud 9 上使用更簡單。以下是設定和啟動說明。
步驟 1 下載 Node.js
JavaScript 通常在瀏覽器中執行。Node.js 是 JavaScript 的一個變體,可以在伺服器、終端或其他硬體上使用。它可以輕鬆建立和執行 Nightmare 指令碼。
Node.js 下載連結
https://nodejs.org/en/download/
步驟 2 下載 NPM
您可以使用 Node 包管理器 (npm) 來設定 Nightmare 庫。當您使用 npm 安裝它時,Nightmare 的所有依賴項都將與它一起安裝。
NPM 安裝連結
https://nodejs.org/en/
步驟 3 安裝 Nightmare.js 庫
使用命令
npm install nightmare
我們已經瞭解瞭如何在 node js playground 中安裝 nightmare.js 庫,現在讓我們繼續瞭解一些 nightmare 的基礎知識,然後我們將轉向 nightmare 的物件。
nightmare 的基本語法如下:
const Nightmare = require('nightmare') const nightmare = Nightmare({object : value_of_object})
在上面的程式碼中,我們使用 node js 的 require() 方法將 ‘nightmare’ 匯入到我們的程式碼中,然後將其儲存到一個變數中,我們稍後在儲存變數的括號中使用它來定義一些物件和值,並再次將其儲存到一個新變數中。
我們已經瞭解了一些 nightmare.js 的基本程式碼結構,現在讓我們轉向 Nightmare.js 的物件 -
Nightmare.js 的物件
由於 nightmare.js 建立了一個新的物件,它可以在 web 中導航並提供有用的內容,為了在這裡新增更多規範,我們有 nightmare 的物件,它們將幫助我們獲得更好的 web 瀏覽體驗,讓我們看看其中的一些 -
watiTimeout
此物件帶有 30 秒的預設時間,使用者還可以根據需要定義一些時間,如果函式“.wati()”在設定的時間範圍內未能返回真值,則會丟擲異常。
const Nightmare = require('nightmare') const nightmare = Nightmare({ waitTimeout: 2000 // in milliseconds })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們為物件 ‘waitTimeout’ 提供了其值為 2000 毫秒的值。
gotoTimeout
此物件帶有 30 秒的預設時間,使用者還可以根據需要定義一些時間,如果函式“.goto()”在提供或設定的時間範圍內未能載入,則會丟擲異常。
const Nightmare = require('nightmare') const nightmare = Nightmare({ gotoTimeout: 2000 // in milliseconds })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們為物件 ‘gotoTimeout’ 提供了其值為 2000 毫秒的值。
loadTimeout
此物件帶有無限秒的預設時間,使用者還可以根據需要定義一些時間,如果由於點選等操作導致的頁面轉換在給定時間內未完成,則強制 Nightmare 離開或移動。
const Nightmare = require('nightmare') const nightmare = Nightmare({ loadTimeout: 2000 // in milliseconds })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們為物件 ‘loadTimeout’ 提供了其值為 2000 毫秒的值。
executionTimeout
此物件帶有 30 秒的預設時間,使用者還可以根據需要定義一些時間,並顯示等待方法 ‘.evaluate’ 語句完成的最長時間。
const Nightmare = require('nightmare') const nightmare = Nightmare({ executionTimeout: 2000 // in milliseconds })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們為物件 ‘exectutionTimeout’ 提供了其值為 2000 毫秒的值。
paths
定義了許多電子已知的預設系統路徑。這些路徑可以透過使用 nightmare 的 path 物件來覆蓋,可以透過以下程式碼來完成:
const Nightmare = require('nightmare') const nightmare = Nightmare({ paths: { userData: ‘/user/data’ } })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們提供了 paths 物件,在其中我們為電子定義了一條路徑。
electronPath
這些對測試 Electron 的各種版本非常有幫助,這些是預構建到 Electron 二進位制檔案的路徑。這些路徑可以透過使用 nightmare 的 path 物件來覆蓋。讓我們看看如何定義 electronpath 的程式碼:
const Nightmare = require('nightmare') const nightmare = Nightmare({ electronPath: require('electron') })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們提供了 electronPath 物件,並且它的鍵值將使用 required 關鍵字匯入。
switches
Electron 還支援 google 命令列支援的開關。此類別中有多個開關。讓我們轉到程式碼以獲取有關如何在 nightmare.js 物件中使用 switches 物件的資訊:
const Nightmare = require('nightmare') const nightmare = Nightmare({ switches: { 'key1' : 'value1', 'key2' : 'value2', } })
在上面的程式碼中,首先我們將 nightmare 匯入到我們的系統中,然後為它建立了一個物件。在變數中,我們提供了 switches 物件,並在其中定義了兩個鍵值對。
結論
在本文中,我們詳細瞭解了 Nightmare.js 以及 Nightmare.js 的安裝。Nightmare 是 Segment 提供的一個高階自動化庫。它是一個很好的冒煙測試自動化選擇,因為它可以執行任何人都可以執行的所有文字輸入、點選和視覺檢查。它使用 Electron 作為無頭瀏覽器執行。