Windows Automation Testing Framework – 使用 UI Automation 的 TreeWalker Class 取元件

在透過 UI Automation 做 Windows 自動化時,通常我們會使用 Automation ID 這類的屬性條件來找相對應的元件。

但我在使用 Windows 內建的 Inspector.exe 來查詢該元件的屬性時,發現右上方有一個按鈕(如下圖),是直接跳到同一層的下一個元件。

螢幕快照 2014-04-15 6.20.06 PM

這時候突然想到,有時候我沒有要針對特別的屬性下去找元件,只是單純想要抓到它的 parent、child 或 sibling 時,FindFirst 就很難去做到了,因此我發現了除了直接透過 FindFirst 這個 function 去找元件之外,還有一個可以直接透過樹狀圖的順序去找的 function,就是透過 TreeWalker 這個 Class。

這個 Class 也是 UI Automation 自己內建的 Class,使用方法就是看你想要找的是哪一層的元件,有 Child、Sibling、Parent 可以去找,只需要將 AutomationElement 丟進相對應的 function,他就會幫你找出相對應的 AutomationElement。

例如:假設我想要找元件 A 的 FirstChild,我就可以用 GetFirstChild(A),它就會直接回傳元件 A 的下一層的第一個 AutomationElement,不會多用其他條件來篩選要找的元件。

最後我得到的結論是:當如果有可以辨別是哪個元件的條件的話,用 FindFirst 給條件去找元件會比較準確;但如果沒有可以辨別的條件可以使用,卻有特定的位置的話,則可以使用 TreeWalker 來找元件。

 

參考網頁:

TreeWalker Class

FindFirst Method

廣告

One thought on “Windows Automation Testing Framework – 使用 UI Automation 的 TreeWalker Class 取元件

發表迴響

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