TestStack.White (二) – 取得元件的方式

上次我們有簡單介紹使用 TestStack.White 操控 Windows 應用程式,這次再深入一點介紹 TestStack.White 一些常用取得 UIA Control 元件的方法。

由於 TestStack.White 是基於 Windows 原生的自動化測試框架 – UIAutomation – 包裝而成的,所以 TestStack.White 的 UIA Control Item 對應到 UIAutomation,就是 UIA Control Type。
(可參考 UI Items 介紹 ,裡面有對照表。以下列出一些常用的元件對照)

UIA ControlType White’s UIItem Additional Info
List ListBox The classname of ListView is misleading
DataGrid ListView ListView in WinForm
Edit TextBox
Text Label
Button Button
CheckBox CheckBox
Table Table DataGridView in WinForm maps to this
Document TextBox MultilineTextBox no longer exists

想要操控 UIA Control 元件須先取得此元件,在 TestStack.White 內可透過以下幾種搜尋條件(SearchCriteria)識別並取得該元件:
1. 透過 AutomationId
*AutomationId 是由 RD 在程式中為元件填入的一個識別值

var ID_editField = "15";
var editField = mainWindow.Get<TextBox>(SearchCriteria.ByAutomationId(ID_editField));

2. 透過 UIItem type
*若有需要指定 2 種以上的搜尋條件,可以透過 “And” 來連接搜尋條件,如以下範例。

var button = mainWindow.Get<Button>(SearchCriteria.ByControlType(ControlType.Button).AndAutomationId("btnOK"));

3. 透過元件上顯示的 Text

var button = mainWindow.Get<Button>(SearchCriteria.ByText("OK"));

4. 透過 Index
*若同一 Window 內有同樣 SearchCriteria 元件之情況,可利用 Index 來找

// if there are two buttons with the same automation id.
var button = mainWindow.Get<Button>(SearchCriteria.ByAutomationId("btnOK").AndIndex(1));

5. Menu Bars 的操控

using TestStack.White.UIItems.MenuItems;
using TestStack.White.UIItems.WindowStripControls;

MenuBar menuBar = mainWindow.Get<MenuBar>(SearchCriteria.ByAutomationId("MenuBar"));
Menu closeBTN_inMenu = menuBar.MenuItem("檔案(F)", "結束(X)");

closeBTN_inMenu.Click();

雖然 TestStack.White 提供很多種方式得到元件,但基本上為了 Test Code 的可讀性,我建議大家在寫的時候可以儘量使用同一種方式來取得元件。如:儘量優先使用 AutomationId 、Text 這些,避免使用 Index 這種會出現 Magic Number 的寫法。

參考資料
1. TestStack.White 官方網站
2. TestStack.White – UIItem Identification

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s