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 作為無頭瀏覽器執行。

更新於:2023 年 3 月 2 日

432 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告