您的位置:首页 > 产品设计 > UI/UE

使用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操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: