使用UI Automation实现自动化测试--4.7 (TogglePattern)

TogglePattern

支持TogglePattern的控件有CheckBoxTreeView中的button控件等。

1.       TogglePattern的方法

Toggle方法用于操作可以循环通过的一组状态并在设置后保持某种状态。

2.       TogglePattern属性

Current属性中的ToggleState有如下三种状态:

1.         On

2.         Off

3.         Indeterminate

    如下代码演示了使用TogglePattern来操作CheckBox控件。


Code
     如下代码为对应的XAML
Code

     本文主要简单介绍了TogglePattern以及使用TogglePattern操作CheckBox的方法。

posted @ 2009-09-20 22:59 开着拖拉机 阅读(1248) 评论(3) 编辑 收藏

 回复 引用 查看   
#1楼2009-09-21 12:47 | mrfangzheng      
使用UI Automation时测试对象必须是.exe吗?
如何测试一个UserControl呢?

 回复 引用 查看   
#2楼[楼主]2009-09-21 14:14 | 开着拖拉机      
@mrfangzheng
目前只是测试一个可执行的程序或者有用户界面存在的程序,应为UI Automation是通过UI的运行时属性来查找控件,进而操作控件,例如运行时使用UI Spy我们可以看到,WPF中的Name属性为AutomationId,Content为Name属性。

 回复 引用 查看   
#3楼2009-11-27 15:19 | tower      
谢谢楼主的一系列文章
另外请教楼主,对那种带checkmark的menu(比如说notepad里的word wrap),如何来知道那个menu是否已经被选中了呢?

开始想用下面代码直接获取TogglePattern然后用状态来判断的,但发现如果wordWrap已经选上,是能够得到TogglePattern,而如果没有选上,在获取TogglePattern时就会抛System.InvalidOperationException。

AutomationElement formatAe = menuAe.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Item 3"));
                ExpandCollapsePattern ecp = formatAe.GetCurrentPattern(ExpandCollapsePattern.Pattern) as ExpandCollapsePattern;
                ecp.Expand();

                AutomationElement wordWrapAe = menuAe.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, "Item 32"));
                TogglePattern tp = wordWrapAe.GetCurrentPattern(TogglePattern.Pattern) as TogglePattern;


用UISpy查看,发现这种menu如果没有选上的话只支持InvokePattern,如果选上了就同时支持InokePattern和TogglePattern。后来我用GetSupportedPatterns得到一系列pattern,然后通过个数来判断状态。
请问有没有其它方法呢?