使用UI Automation实现自动化测试--4.2 (ExpandCollapsePattern)
2010-04-02 10:28
411 查看
ExpandCollapsePattern
表示以可视方式进行展开(以显示内容)和折叠(以隐藏内容)的控件。例如ComboBox控件支持ExpandCollapsePattern。ExpandCollapsePattern有两个主要方法:
Expand()方法:隐藏 AutomationElement 的全部子代节点、控件或内容。
Collapse()方法:显示 AutomationElement 的全部子节点、控件或内容。
以下代码是用ExpandCollapsePattern来测试ComboBox控件的Expand和Collapse。
using System; using System.Text; using System.Diagnostics; using System.Threading; using System.Windows.Automation; namespace UIATest { class Program { static void Main(string[] args) { Process process = Process.Start(@"F:/CSharpDotNet/AutomationTest/ATP/WpfApp/bin/Debug/WpfApp.exe"); int processId = process.Id; AutomationElement element = FindElementById(processId, "comboBox1"); ExpandCollapsePattern currentPattern = GetExpandCollapsePattern(element); currentPattern.Expand(); Thread.Sleep(1000); currentPattern.Collapse(); } /**//// <summary> /// Get the automation elemention of current form. /// </summary> /// <param name="processId">Process Id</param> /// <returns>Target element</returns> public static AutomationElement FindWindowByProcessId(int processId) { AutomationElement targetWindow = null; int count = 0; try { Process p = Process.GetProcessById(processId); targetWindow = AutomationElement.FromHandle(p.MainWindowHandle); return targetWindow; } catch (Exception ex) { count++; StringBuilder sb = new StringBuilder(); string message = sb.AppendLine(string.Format("Target window is not existing.try #{0}", count)).ToString(); if (count > 5) { throw new InvalidProgramException(message, ex); } else { return FindWindowByProcessId(processId); } } } /**//// <summary> /// Get the automation element by automation Id. /// </summary> /// <param name="windowName">Window name</param> /// <param name="automationId">Control automation Id</param> /// <returns>Automatin element searched by automation Id</returns> public static AutomationElement FindElementById(int processId, string automationId) { AutomationElement aeForm = FindWindowByProcessId(processId); AutomationElement tarFindElement = aeForm.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, automationId)); return tarFindElement; } ExpandCollapsePattern helper#region ExpandCollapsePattern helper /**//// <summary> /// Get ExpandCollapsePattern /// </summary> /// <param name="element">AutomationElement instance</param> /// <returns>ExpandCollapsePattern instance</returns> public static ExpandCollapsePattern GetExpandCollapsePattern(AutomationElement element) { object currentPattern; if (!element.TryGetCurrentPattern(ExpandCollapsePattern.Pattern, out currentPattern)) { throw new Exception(string.Format("Element with AutomationId '{0}' and Name '{1}' does not support the ExpandCollapsePattern.", element.Current.AutomationId, element.Current.Name)); } return currentPattern as ExpandCollapsePattern; } #endregion } }
以下代码为被测程序的xaml文件:
<Window x:Class="WpfApp.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="219" Width="353"> <Grid> <ComboBox Name="comboBox1" Height="23" VerticalAlignment="Top" Margin="94,58,0,0" HorizontalAlignment="Left" Width="119"> <ComboBoxItem>kaden</ComboBoxItem> <ComboBoxItem>sam</ComboBoxItem> </ComboBox> </Grid> </Window>
Summary
本文主要是对ExpandCollapsePattern 做简单的介绍,并使用ExpandCollapsePattern来操作ComboBox控件,对ComboBox进行Expand和Collapse操作。
相关文章推荐
- 使用UI Automation实现自动化测试--4.2 (ExpandCollapsePattern)
- 使用UI Automation实现自动化测试--4.3 (InvokePattern)
- 使用UI Automation实现自动化测试--4.6.1 (SelectionItemPattern)
- 使用UI Automation实现自动化测试--4.7 (TogglePattern)
- 使用UI Automation实现自动化测试--4.7 (TogglePattern)
- 使用UI Automation实现自动化测试--4.9 (ScrollPattern)
- 使用 UI Automation 实现自动化测试--4.2
- 使用UI Automation实现自动化测试--4.1 (DockPattern)
- 使用UI Automation实现自动化测试 (InvokePattern)
- 使用UI Automation实现自动化测试 --微软提供的控件Pattern
- 使用UI Automation实现自动化测试--4.6.2 (SelectItemPattern Demo)
- 使用UI Automation实现自动化测试--7.2 (模拟键盘复杂操作在自动化测试中的应用)
- 使用UI Automation实现自动化测试--1
- 使用 UI Automation 实现自动化测试--3
- 使用UI Automation实现自动化测试--4.6.1
- 使用UI Automation实现自动化测试--1
- 使用UI Automation实现自动化测试--4.6.2
- 使用UI Automation实现自动化测试--3
- 使用 UI Automation 实现自动化测试--4.1
- 使用UI Automation实现自动化测试 --工具使用