【发布时间】:2013-03-08 02:46:42
【问题描述】:
我想使用 MSAA 自动化简单的 Windows 应用程序。我不知道如何找到控件(比如TextBox 和Button)并获取它们的值(比如获取TextBox 的值并单击按钮)。
【问题讨论】:
标签: c# winforms ui-automation msaa
我想使用 MSAA 自动化简单的 Windows 应用程序。我不知道如何找到控件(比如TextBox 和Button)并获取它们的值(比如获取TextBox 的值并单击按钮)。
【问题讨论】:
标签: c# winforms ui-automation msaa
为什么要使用 MSAA 实现自动化?微软目前的方式是UI Automation。
来自维基百科(重点是我的):
UIA 类似于 Microsoft Active Accessibility (MSAA),因为它 提供了一种公开和收集用户信息的方法 支持用户界面的界面元素和控件 可访问性和软件测试自动化。 然而,UIA 是一个较新的 提供比 MSAA 更丰富的对象模型的技术...
借助 UI 自动化,您可以通过创建本机或 .NET 应用程序或使用依赖于 UI 自动化的第三方工具(如 RIATest)来实现自动化。
(声明:我隶属于 RIATest)。
【讨论】:
以下假设您将使用 C/C++ 开发您的自动化程序,因为我不确定从 .NET 中使用 MSAA 是否容易(尽管可能!)
如果您不想使用 C++,可以使用 .NET 中的 MS UI 自动化进行调查。
要开始使用 MSAA 和 C++ 开发自动化客户端应用程序,我建议:
这将安装 Inspect.exe 工具 - 在以下位置找到它:
Programs > Microsoft Windows SDK v7.1 > Tools > Inspect Objects
启动 Inspect.exe 并将左上方的下拉菜单从“UI 自动化”切换到“MSAA”
启动被测应用程序并将鼠标悬停在其 UI 元素上 - 元素的 MSAA 属性应显示在 Inspect.exe 中
编写您的自动化代码 :)
一个重要的选择是决定是使用事件驱动技术来定位您的元素,还是简单地从顶层(桌面)开始,在桌面的子元素中找到您的应用,然后深入到您的应用程序的元素树。
codeproject.com 上有一个很好的事件驱动 MSAA 教程:http://www.codeproject.com/Articles/18290/Introduction-to-Microsoft-Active-Accessibility
MSAA 中基于树的导航的教程似乎有点少。我将从 MS 文档开始 - 我推荐第一个:
Active Accessibility Client Interfaces and Functions
【讨论】: