SelectionItemPattern

支持SelectionItemPattern的控件有ListViewListBoxRadioButtonGridView等。

1.         SelectionItemPattern的三个重要方法:

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

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

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

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

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

使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_02Code
 1使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03using System;
 2使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03using System.Text;
 3使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03using System.Diagnostics;
 4使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03using System.Threading;
 5使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03using System.Windows.Automation;
 6使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03
 7使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03namespace UIATest
 8使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_xml_10使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_xml_11使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
 9使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13    class Program
10使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15    使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
11使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        static void Main(string[] args)
12使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
13使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            Process process = Process.Start(@"F:\CSharpDotNet\AutomationTest\ATP\WpfApp\bin\Debug\WpfApp.exe");
14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            int processId = process.Id;
15使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
16使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            AutomationElement element = FindElementById(processId, "radioButton1");
17使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            SelectionItemPattern selectionItemPattern = GetSelectionItemPattern(element);
18使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            selectionItemPattern.Select();
19使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        }

20使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
21使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        /**//// <summary>
22使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// Get the automation elemention of current form.
23使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// </summary>
24使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// <param name="processId">Process Id</param>
25使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        /// <returns>Target element</returns>

26使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        public static AutomationElement FindWindowByProcessId(int processId)
27使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
28使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            AutomationElement targetWindow = null;
29使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            int count = 0;
30使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            try
31使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15            使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
32使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                Process p = Process.GetProcessById(processId);
33使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                targetWindow = AutomationElement.FromHandle(p.MainWindowHandle);
34使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                return targetWindow;
35使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27            }

36使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            catch (Exception ex)
37使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15            使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
38使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                count++;
39使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                StringBuilder sb = new StringBuilder();
40使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                string message = sb.AppendLine(string.Format("Target window is not existing.try #{0}", count)).ToString();
41使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                if (count > 5)
42使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15                使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
43使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                    throw new InvalidProgramException(message, ex);
44使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27                }

45使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                else
46使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15                使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
47使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                    return FindWindowByProcessId(processId);
48使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27                }

49使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27            }

50使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        }

51使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
52使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
53使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        /**//// <summary>
54使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// Get the automation element by automation Id.
55使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// </summary>
56使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// <param name="windowName">Window name</param>
57使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// <param name="automationId">Control automation Id</param>
58使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        /// <returns>Automatin element searched by automation Id</returns>

59使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        public static AutomationElement FindElementById(int processId, string automationId)
60使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
61使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            AutomationElement aeForm = FindWindowByProcessId(processId);
62使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            AutomationElement tarFindElement = aeForm.FindFirst(TreeScope.Descendants,
63使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            new PropertyCondition(AutomationElement.AutomationIdProperty, automationId));
64使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            return tarFindElement;
65使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        }

66使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
67使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14        SelectItemPattern#region SelectItemPattern
68使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
69使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        /**//// <summary>
70使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// Get SelectItemPattern
71使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// </summary>
72使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        /// <param name="element">AutomationElement instance</param>
73使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        /// <returns>SelectItemPattern instance</returns>

74使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13        public static SelectionItemPattern GetSelectionItemPattern(AutomationElement element)
75使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15        使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
76使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            object currentPattern;
77使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            if (!element.TryGetCurrentPattern(SelectionItemPattern.Pattern, out currentPattern))
78使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_14使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_15            使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_microsoft_12{
79使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                throw new Exception(string.Format("Element with AutomationId '{0}' and Name '{1}' does not support the SelectionItemPattern.",
80使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13                    element.Current.AutomationId, element.Current.Name));
81使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27            }

82使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13            return currentPattern as SelectionItemPattern;
83使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        }

84使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_13
85使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27        #endregion

86使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_控件_27    }

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

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

     以下代码为XAML

使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_UI Automation_02Code
1使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03<Window x:Class="WpfApp.Window1"
2使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03    Title="Window1" Height="219" Width="353">
5使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03    <Grid>
6使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03        <RadioButton Height="16" HorizontalAlignment="Right" Margin="0,46,10,0" Name="radioButton1" VerticalAlignment="Top" Width="120">RadioButton</RadioButton>
7使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03    </Grid>
8使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03</Window>
9使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)_IT_03

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