為網站或網頁應用程式撰寫測試
概述
Nightwatch 提供簡單且全面的 API,用於與網頁元素互動,並執行各種操作和斷言。在 Nightwatch v3 中,引入了全新的元素 API,使測試撰寫更加簡單和簡潔。
Nightwatch inspector 使撰寫測試更加容易,因為它提供了在長期內持久的選擇器建議。
如果您幾乎不懂或完全不懂程式碼,您也可以使用我們的 Chrome 錄製器擴充功能 來錄製測試,並使用 Nightwatch 執行它們。
尋找元素
在您可以與元素互動或執行斷言之前,您必須使用選擇器從 DOM 樹中找到元素。Nightwatch 支援各種選擇器,使尋找元素變得輕而易舉。您可以使用 .find()
和 .findAll()
相關的指令來執行此操作
- CSS 選擇器 :
browser.element.find('css selector'); browser.element.findAll('css selector');
- xPath 選擇器 :
browser.element.find(by.xpath(('xpath string')); browser.element.findAll(by.xpath(('xpath string'));
- 依角色 :
browser.element.findByRole('role'); browser.element.findAllByRole('role');
- 依文字 :
browser.element.findByText('text'); browser.element.findAllByText('text');
- 依佔位符文字 :
browser.element.findByPlaceholderText('placeholder text'); browser.element.findAllByPlaceholderText('placeholder text');
- 依標籤文字 :
browser.element.findByLabelText('label text'); browser.element.findAllByLabelText('label text');
- 依替代文字 :
browser.element.findByAltText('alt text'); browser.element.findAllByAltText('alt text');
除了尋找指令之外,Nightwatch 還提供便利的方法,有助於在更複雜的場景中尋找方法
- 從元素陣列中尋找第 nth 個元素
.nth(index)
- 尋找元素陣列的 count
.count()
尋找巢狀元素
除了這組強大的選擇器之外,Nightwatch 還支援選擇器鏈
browser.element.find('CSS selector').findByText('text').click();
// or
browser.element.findAll('CSS selector').nth(2).findByText('text').click();
有關選擇器的更詳細指南和範例,請參閱此指南。
指令
找到元素後,您可以使用指令與它們互動
互動指令
- 點擊 :
browser.element.find('selector').click();
- 雙擊 :
browser.element.find('selector').doubleClick();
- 右鍵點擊 :
browser.element.find('selector').rightClick();
- 在輸入框中輸入 :
browser.element.find('selector').sendKeys('text');
- 設定值 :
browser.element.find('selector').setValue();
- 清除 :
browser.element.find('selector').clear();
.find()
之外,您也可以使用其他尋找相關的方法,例如 .findByText()
、.findByRole()
,然後再使用指令取得元素詳細資訊
- 取得文字 :
browser.element.find('selector').getText();
- 取得值 :
browser.element.find('selector').getValue();
- 取得標籤名稱 :
browser.element.find('selector').getTagName();
- 取得屬性 :
browser.element.find('selector').getAttribute();
- 取得 CSS 屬性 :
browser.element.find('selector').getCssProperty();
- 取得 ID :
browser.element.find('selector').getId();
- 取得輔助功能名稱 :
browser.element.find('selector').getAccessibilityName();
- 取得 rect :
browser.element.find('selector').getRect();
更新元素詳細資訊
- 設定文字 :
browser.element.find('selector').setText('text');
- 設定屬性 :
browser.element.find('selector').setAttributes('attribute', 'attribute value');
設定瀏覽器內容
- 設定地理位置 :
browser.setGeolocation({latitude:
, longitude: , accuracy: 100});
有關詳細範例,請參閱此指南。
斷言
撰寫自動化測試的主要目的是設定斷言以通過。使用 Nightwatch 進行斷言有 2 種方式
您可以使用內建的斷言
- 文字相等 :
browser.element.find('selector').getText().assert.equals('text');
- 文字包含 :
browser.element.find('selector').getText().assert.contains('text');
- 文字符合 :
browser.element.find('selector').getText().assert.matches('regex');
- 值相等 :
browser.element.find('selector').getValue().assert.equals('text');
- 值包含 :
browser.element.find('selector').getValue().assert.contains('text');
- 值符合 :
browser.element.find('selector').getValue().assert.matches('regex');
- URL 相等 :
browser.assert.urlEquals('text');
- URL 包含 :
browser.assert.urlContains('text');
- URL 符合 :
browser.assert.urlMatches('regex');
- 可見 :
browser.element.find('selector').assert.visible();
Chai expects
如果您喜歡 Chai 風格的斷言,您也可以使用 expect() 來執行斷言
- 文字相等 :
expect(element).text.to.equal();
- 文字包含 :
expect(element).text.to.contain();
- 文字相等 :
expect(element).text.to.match();
- 值相等 :
expect(element).value.to.equal();
- 值包含 :
expect(element).value.to.contain();
- 值相等 :
expect(element).value.to.match();
- URL 相等 :
expect(brower.url()).to.equal();
- URL 包含 :
expect(brower.url()).to.contain();
- URL 符合 :
expect(brower.url()).to.match();
- 可見 :
expect(element).to.be.visible();
有關斷言的詳細範例,請參閱此文章
使用 Nightwatch inspector
Nightwatch inspector 是一種點擊式工具,旨在節省您撰寫測試的時間,並幫助您撰寫更持久的測試。它也允許您從開發人員工具本身嘗試 Nightwatch 指令。了解更多。
使用 Chrome 開發人員工具錄製
或者,Nightwatch 提供工具來幫助您開始,方法是在螢幕上錄製您的測試操作,並自動產生 Nightwatch 測試腳本,而無需撰寫任何程式碼。探索使用 Google Chrome 開發人員工具錄製器建立 Nightwatch 測試以了解更多資訊。
建議的下一步
既然您了解了為行動應用程式撰寫測試的基本知識,現在是時候更詳細地了解選擇器、指令和斷言