使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)

SelectionItemPattern

支持SelectionItemPattern的控件有ListViewListBoxRadioButtonGridView等。

1.         SelectionItemPattern的三个重要方法:

1.         AddToSelection:将当前元素添加到所选项的集合。

2.         RemoveFromSelection: 从选定项的集合中移除当前元素。

3.         Select: 取消所有已选中的项,然后选择当前元素。

2.         SelectionItemPatternCurrent属性
可通过Current属性的IsSelected属性来判断AutomationElement是否被selected.

     如下代码演示了使用SelectionItemPattern来操作RadioButton控件。

Code

     以下代码为XAML

Code

    本文简单介绍了SelectionItemPattern以及使用SelectionItemPattern来操作RadioButton

posted @ 2009-09-18 16:57 开着拖拉机 阅读(1694) 评论(6) 编辑 收藏

 回复 引用 查看   
#1楼2009-09-18 17:18 | xiaosuo      
沙发
 回复 引用 查看   
#2楼2009-09-18 18:09 | AlexLiu      
和我原来用过的一个工具有点异曲同工
 回复 引用 查看   
#3楼[楼主]2009-09-18 18:20 | 开着拖拉机      
@AlexLiu
介绍一下我学习学习,谢谢

 回复 引用 查看   
#4楼2009-09-19 01:55 | 葡萄园de杂烩      
关于selection pattern, 有一个非常tricky的问题
对于radiobox, 如果通过selectionPattern去修改selection的话, radiobox的onclicked event不会触发的
如果developer写代码的时候是通过onclicked事件来做处理,就可能导致问题

 回复 引用 查看   
#5楼[楼主]2009-09-19 11:55 | 开着拖拉机      
@葡萄园de杂烩
使用SelectionItemPattern来操作RadioButton只能触发SelectionChanged事件,但是RadioButton没有此事件,例如ListView中有SelectionChanged事件。
对于onclicked event,一般情况下需要此控件支持InvokePattern,使用InvokePattern的Invoke方法可以达到OnClick event。
但是对于Click,mouse相关的事件我们可以通过模拟鼠标来达到相应的效果,有关模拟鼠标在基于UI Automation测试中的使用以后会写出来, 不知道有没有回答清楚您的问题。

 回复 引用 查看   
#6楼2009-09-19 13:34 | 葡萄园de杂烩      
倒不是说这是我的问题
而是我们项目中以往遇上的情况和经验
另外,RadioButton是没有Invoke Patten的, 至少对于Win32的是这样,不知道WPF

使用mouseclick是一个办法,但是也有缺陷. 比如这个RadioButton被其它窗口遮挡,或者没有scroll到位置的时候,鼠标模拟会失败

楼主加油,给楼主看一个用UIAutomation技术最后运行起来的视频:
http://www.tudou.com/programs/view/yued9Mcm4l4/