UIA(3)-查找控件

Root Element

系统的root element就是windows的桌面,其他所有控件都是桌面的子控件。在自动化程序中查找控件,需要从一个父控件开始,这个父控件可以是任何控件,桌面是所有控件的父控件。我们可以通过下面的方法获取这个root element。

var desktop=AutomationElement.RootElement;

Condition

在UIA中我们通过condition来查找元素,condition定义了查找元素的方式(属性)。

UIA中有两个预定义condition:trueCondition和falseConditon。TrueCondition会返回指定搜索范围内的所有元素;相反,FalseCondition会防止搜索范围内任何元素被找到。

除此之外,还有三个预定义的condition:ContentViewCondition,ControlViewCondition, 和RawViewCondition,它们可以单独使用也可以以组合条件的方式使用。

我们也可以通过property构建特定属性的propertyCondition,比如可以构建支持某种control pattern的condition。我们也可以通过AndCondition, OrCondition, 和NotCondition来构建组合类型的condition.

var condition=new PropertyCondition(AutomationElement.NameProperty,"test")

var btnCondition=new AndCondition(

              newPropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button),

              newPropertyCondition(AutomationElement.NameProperty,"ok"));

Search Scope

我们可以通过findfirst和findall两个函数来定位控件,这两个函数的入参包括查找的范围和查找条件。Findfirst会返回满足当前元素所在查找范围内符合条件的第一个元素,Findall会返回满足当前元素查找范围内符合条件的所有元素。search scope可以是以下多种查找范围的组合:Ancestors、Children、Descendants、Element、Parent和Subtree。

var window=desktop.FindFirst(TreeScope.Children, condition);

AutomationElementCollection elementCollection =

                               elementWindowElement.FindAll(TreeScope.Children, conditions);

你可能感兴趣的:(UIA(3)-查找控件)