Table of Contents

MS Windows Automation API

MSAA and UIA

目前 MS Windows 提供了 MSAA 和 UIA :

  • Microsoft Active Accessibility (MSAA)
    • 很早被引入,所以很多控件都支持。
    • 引入的最初目的是辅助特殊人群使用电脑,所以 Automation 的功能不强。
    • 可以通过,MSAA 提供的 COM Interface。
    • 自定义的 UI Control 也需要要实现对应的 MSAA 接口。
  • Microsoft UI Automation (UIA)
    • 可以通过 .Net Interface 访问。
    • MS 新的 UI Framework 基本都支持,比如 WPF, Windows Forms。
    • UIA 内部会使用 MSAA bridge 来访问兼容比较老的 UI Control。
    • 通过提供各种 UIA Pattern 的方式来方便 Test Automation 的访问,同样 UI Control 开发也只需要提供对应的实现。对于 UI 控件测试者和开发者都更友好、便利些。

Assistant Tools

有開源的工具和 MS 提供的工具。通過輔助工具可以幫助開發或這測試者查看、監視或者調用 UI Control 上的 UIA/MSAA 屬性和方法。

MS Tools

  • 現在 MS 提供的 Testing tools 能在 http://msdn.microsoft.com/en-us/library/dd373661.aspx 上找到詳細情況。
  • 時間推移,好幾個 MS 提供的工具都已經被放棄了。比如常用的 UISpy 被放棄了(可能是功能上和 Open Source 的 UIA Verify 類似)。 http://msdn.microsoft.com/en-us/library/ms727247.aspx 官方說法是: "The UI Spy tool is obsolete and no longer available. Developers should use other tools such as Inspect.exe that are available in the Windows Software Development Kit (SDK). For more info, see Testing Tools."
    我自己保留了一份舊版本的 binary 在我的 DropBox 共享目錄裡: ms.uia-tools in my DropBox

    uispy.zipUISpy
    inspect.zipInspect
    acc.explorer32.zipAccExplorer32
    acc.event.zipAccEvent

Open source tools

SDK

My practice

  • ps.uia - https://github.com/xiongjia/ps.uia
    • 我的基本想法是在 Powershell 里调用 MS UIAutomation 接口。基本上就是用 reflector 去调用 .Net UIA 对象。
    • 我希望是 Pure Script 不要用 Native or .Net Managed code 去,操作 UIA。(不過好像有很多困難)
    • 目前只是實現了幾個簡單查詢和 Pattern 操作.覺得深入可能還是只能寫一些 Managed code。

Resource