使用UI Automation实现自动化测试--1

Introduction

UI AutomationMicrosoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active AccessibilityUI Automation在某些方面超过了MSAAUI自动化提供了Windows Vista中,微软Windows XP的全部功能,和Windows Server 2003

UI Automation中,所有的窗体、控件都表现为一个AutomationElement AutomationElement 中包含此控件或窗体的属性,在实现自动化的过程中,我们通过其相关属性进行对控件自动化操作。对于UI用户界面来说,所有显示在桌面上的UI,其实际是一个UI Tree,根节点是desktop。我们可以使用UI Spy或者是SPY++来获得WindowControl的相关信息。在UI Automation里,根节点表示为AutomationElemnet.RootElement. 通过根节点,我们可以通过窗体或控件的Process IdProcess Name或者Window Name找到相应的子AutomationElement,例如DialogButton TextBoxCheckbox等标准控件,通过控件所对应的Pattern进行相关的操作。

UI Automation structure

 

如下图所示:



1. 
在服务端由UIAutomationProvider.dllUIAutomationTypes.dll提供。

     2. 在客户端由UIAutomationClient.dllUIAutomationTypes.dll提供。

     3. UIAutomationCore.dllUI自动化的核心部分,负责Server端和Client端的交互。

     4. UIAUtomationClientSideProvides.dll为客户端程序提供自动化支持。

Summary

    本文主要简单介绍了UI Automation相关结构以及核心库。

posted @ 2009-09-08 15:21 开着拖拉机 阅读(1909) 评论(6) 编辑 收藏

 回复 引用 查看   
#1楼2009-09-13 22:09 | Alex Huang      
感谢楼主,并且我想了解更多。
 回复 引用 查看   
#2楼2010-03-08 16:28 | 行走天涯      
一篇文章就这么点, 一句话形容:太小气
 回复 引用 查看   
#3楼[楼主]2010-03-09 00:22 | 开着拖拉机      
@行走天涯
我水平不高,见笑啦

 回复 引用 查看   
#4楼2010-07-15 17:28 | 崔佃鹏      
哥,你小气的快不行了,!!!!
 回复 引用 查看   
#5楼[楼主]2010-07-16 15:48 | 开着拖拉机      
@崔佃鹏
哈哈,这个当时做的也不是很深刻啊

 回复 引用 查看   
#6楼2011-11-16 21:42 | guidee      
你好,
看了你关于UIAutomation系列的文章,受益颇多。
我在实践中遇到了两个问题,一直没有找到解决的方法,希望你能指导一下。
1:我希望获得一个element 的所有children, 但是FindAll()方法 有个一个Condition 参数,我该怎样设置这个参数才能使 FindAll()返回所有的children.
public AutomationElementCollection FindAll(
TreeScope scope,
Condition condition
)

2:通常我们用UISPY 或者 SPY++ 抓取某个element,可以查看到它的各项属性。
但是我实践中发现,有些element 是抓取不到的,那我们的代码应该怎样获得这些element.
e.g.
在win 2008 server,打开server manager->Features->Remove Features, 弹出 Remove Features wizard窗口,这个窗口里有一个Tree, UISPY只能抓取到包含这个Tree 的pane,我们该如何编程抓取到这个tree。