top of page

【Katalon Studio】如何在複雜的網頁定位器框架中,選擇最佳自動化測試的工具

Updated: Jun 22, 2022

企業最佳選擇定位工具解決方案,針對各類網頁自動化測試執行,協助您的團隊在最短的時間內有效地完成更多工作。


在網頁的自動化測試上,利用定位工具是用在識別網頁上元素的主要佈署方式。當涉及到網頁的自動化測試,選擇合適的定位工具至關重要。由於網頁元素定位器仰賴於實現過程,因此,對於每個網頁應用程式並沒有某種特定或是萬能的佈署方法。


選擇的方法會受以下的因素影響:Web 應用程式框架、開發的習慣、軟體的生命週期、還有自動化測試領導者的經驗。使用適合的佈署方法可以使測試項目穩定且可以持續擴展,並且減少維護階段的許多工作量。


Katalon Stuido 提供生成必要定位器(Xpath、CSS)的功能。有許多不同類型的網頁元素,其中常見的包括,標籤、文字方塊、按鈕、選單、超連結、複選方塊和單選按鈕(Label, Textbox, Button, Select, Hyperlink, Checkbox and Radio button.)



為了辨識這些元素,我們可以遵循以下的佈署方法。
  • 簡單定位器:id, name, class, tag, link text, attribute

  • 通過組合上述定位器而成的高級定位器: - Xpath - CSS

  • 包括能 Xpath 中使用的功能 - contains - sibling - ancestor


如何幫助團隊為網頁自動化測試挑出好的部署方法?

在執行自動化測試之前,團隊必須了解以下問題:

  • 使用了那些網頁技術?

  • 開發團隊沿用了哪些開發慣例?

這些問題的答案可以幫助我們決定那些定位器的值是靜態的或是動態的。


ID 通常在網頁 UI 測試中,被建議為最佳的定位器。因為在網頁中視為唯一值。但是,如果是在網頁運行中動態生成的,就會出現問題。


不同的網頁技術有著各自的默認設定。例如:ExtJs 或 Angular 框架默認會定期創建動態元素 ID。因此,如果被測物件是使用這些技術所開發,可以預期 ID 是動態產生的,並且避免將它們用在主要選擇器。在這種情況下,應該改用 Class, Name 或是 Text 屬性。


我們分享在自動化測試情境下,使用默認產生動態 ID 的網頁 UI。也可以輕鬆地透過 Katalon Studio 的定位器來設定,並儲存成 Test Objects。以利後續維護階段,大量 Test Cases 皆直接套用更新的Test Objects來源。


錄製結果

首先錄製的結果可能為 xpath(//div[@id='動態產生亂數 ID 的值']/div[3]/div[3]/div[10]),ID 隨機的定位。如圖一

圖一

切換到 Attribute 可以選取下方的屬性來更改定位器,並依循我們的開發習慣來選取。如圖二

圖二

儲存之後 Object 會被儲存在Object Repository 裡面;更改之後,有包含到這個Object的Test Case都會套用更改後的Object。如圖三的 Item 12的Object更改之後,Item 13的Object也會更新。

圖三

測試維護階段

在後續自動化測試維護階段,可以方便地來維護我們的測試腳本。而且還應該考慮開發團隊的約定俗成,如果團隊使用的所有的元素包含靜態ID,靜態名稱。那麼靜態屬性可以用作主要定位器。此外,如果元素具有可以通過靜態定位器的父類別,子類別或親屬類別,則不必通過靜態定位器來定位元素。可以改使用 Xpath 函數定位元素。


了解被測物件生命週期,如果被測物件龐大並且生命週期很長,包括了維護階段,我們必須認真考慮定位器的佈署,錯誤的方法可能會導致浪費大量的時間跟精力來更新還有維護測試案例。


以上展現了在網頁定位元素的一些策略。這些對應出使用者在執行 Web UI 自動化測試的觀念:首先,考慮簡單的靜態定位器。然後當簡單的方法不起作用時,逐漸增加解決方案的複雜性。


值得一提的是,在決定定位器必須遵循以下原則:定位器必須是唯一的、可讀的或可維護的。如果定位器不能唯一的代表目標元素,則在維護階段會出現技術問題,因為無法知道應該更改哪個定位器。


想了解 katalon Studio 自動化測試工具,如何輕鬆存取UI元素嗎?還有提高可重用性?

Katalon Studio 涵蓋給自動化測試初學者的無代碼體驗,以及自動化測試專家的持續擴展。


想集結自動化測試領域在CI/CD上,實現DevOps的真正能力嗎?

友環企業專業的顧問團隊歡迎您來信或來電洽詢!




332 views0 comments

Recent Posts

See All
bottom of page