在手動測試中,我們是透過眼睛看,看完後透過滑鼠點擊元件,鍵盤輸入文字來來執行我們的測試,但是在自動化測試中,我們需要透過腳本來達成以上的行為,因此本章節將會介紹說,在腳本中我們如何”看”到元件,因為元素定位是成功進行測試的關鍵。無論是點擊按鈕、輸入文字,還是驗證元素的存在,測試腳本都必須能夠準確地找到網頁上的特定元素。因此,了解並掌握不同的元素定位方式是進行高效、可靠的 Web 自動化測試的基礎。
我們可以透過瀏覽器提供的開發者工具來輔助我們視覺化抓取元件,透過點選右鍵後選擇檢查或是鍵盤 F12 來開啟瀏覽器的開發者模式,開啟後我們在 Elements 的 Tab 中可以看到這個網頁的 DOM,我們便會透過這個工具來抓取我們要互動的元件,開啟後的樣式如下:
這邊有個小技巧,透過點擊開發者工具畫面左上方的箭頭,這時候我們指到哪個元件,右邊的 DOM 便會調整到對應到位置,點擊後便會顯示該元件的相關資料,接著我們便可以透過這個 DOM 來解析出元件的定位點,讓我們可以順利的抓取。
除了透過箭頭點擊之外,如果我們想要透過 css 選擇器或是 xpath 尋找元件時,可以透過搜尋的方式來尋找,在右側的開發者工具中,我們透過鍵盤選曲 ctrl + F,變化開起搜尋的方框,在那個輸入框我們可以輸入我們想搜尋的元件定位方法來幫助我們尋找到元件。
元件定位的方法有很多,接著下面我們列舉出幾種方法,在測試開發中,我們可以根據當前頁面的狀況,選擇最適合的方法。
id=
前綴來進行定位。Click Element id=submit-button
name
屬性,可以通過該屬性進行定位。這種方法適合用在表單元素上。name=
前綴來定位元素。Input Text name=username my_username
class
屬性進行定位,適合用在具有相同樣式的多個元素上。不過,當同一class
屬性應用在多個元素時,這種方式的精確性會下降。class=
前綴來定位。Click Element class=btn-primary
div
、input
等。這種方法通常與其他定位方式結合使用,因為單獨使用標籤名可能會定位到多個元素,會是我們可以請開發的夥伴在標籤中埋進 qa-test='button_login'
這例行的 tag 來協助我們快速定位。tag=
前綴來定位。Click Element tag=h1
Click Element css=div.container > ul > li:first-child
CSS Selector 其實有許多更彈性的操作,可以幫助我們在測試上更好的尋找文件,但是由於實在太多了,因此在下面我們只列出幾點做舉例,關於更多的使用方式可以上網查詢:
Selector | 範例 | 說明 |
---|---|---|
:only-child | div:only-child | 表示沒有任何兄弟元素的元素 |
div(2) | div(2) | 從重複的元素中取得第二個 |
:checked | input:checked | 選擇每個 input 狀態是吧選中的元素 |
關於 XPath 的話又可以說很多啦,XPath(XML Path Language)是一種用來在 XML 文檔中定位元素的語言,由於 HTML 是一種特殊的XML,因此 XPath 也廣泛應用於 Web 自動化測試中。XPath 允許通過元素的層級、屬性、索引、文本內容等方式來定位網頁上的元素,使其成為一種強大而靈活的定位工具,最一開始 XPath 的目的是用在作為一個通用於 XPointer 與 XSLT 間的語法魔行,但是很快就被大家用來當作查詢語言囉。
XPath的基本語法包括以下幾種形式:
/html/body/div[1]/ul/li[2]/a
//div[@class='container']/ul/li[2]/a
//input[@type='text']
//button[text()='Submit']
使用方式為透過xpath=
前綴來定位元素。
Click Element xpath=//button[text()='Submit']
上述提到這麼多的選擇方式,那該如何選擇呢?
掌握多種元素定位方式是 Web 自動化測試成功的基礎。根據不同的需求選擇合適的定位方式,不僅能提高測試的精確性,還能增強測試的穩定性和可維護性。在實際應用中,靈活運用這些技巧,將有助於創建更高效、可靠的自動化測試方案。