【轉】微軟UI自動化測試的技術演變

UIAutomation和WPF

  UIAutomation是微軟從Windows Vista開始推出的一套全新UI自動化測試技術, 簡稱UIA。在最新的Windows SDK中,UIA和MSAA等其它支持UI自動化技術的組件放在一起發佈,叫做Windows Automation API。

  和前面的介紹相比,我傾向於認爲UIA是一項自動化測試“技術”,而MSAA和Win32 API只是實現自動化測試的兩種“方法”。這裏區分“技術”和 “方法”的原因是, 一項“技術”往往有獨立的模型,體貼的開發接口,用來專門解決某一類的問題,同時允許不同的實現細節。UIA可以被看作“技術”,是因爲:

  UIA定義了全新的、針對UI自動化的接口和模式。 分別是支持對UI元素進行遍歷和條件化查詢的TreeWalker/FindAll。定義了讀寫UI元素屬性的UIA Property, 包括Name、 ID、Type、ClassName、Location、 Visibility等等。定義了UI元素行爲的UIA Pattern, 比如Select、Expand、Resize、 Check、Value等等。 還引入了UIA Event接口,可以讓測試程序在某些事件發生後得到通知,比如新窗口打開事件等。

  以往的Win32和MSAA 設計出發點並不是爲解決UI自動化。Win32旨在提供的通用開發接口, MSAA旨在提供程序的多種訪問方式。相反,UIA的設計目的,以及新引入的模式和接口都完全是針對UI自動化測試的。

  在後面的文章中我們會詳細分析UIA的內部實現。可以看到,UIA這一套接口和模式,可以在不同平臺,不同開發工具中實現和使用。其內部實現方式也因地制宜, 前後的兼容性都照顧得很好。 同時,UIA提供了託管的和非託管兩種API,這些都是Win32和MSAA無法比擬的。

  下面一段簡單的C#代碼演示瞭如何使用UIA測試Windows自帶計算器完成計算3+5-2的操作(下述代碼可能需要修改以適應不同Windows版本的calc.exe程序。本代碼使用Visual Studio 2008針對Windows 2008 Server R2 English 編寫)

發佈了15 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章