我今天正在学习 .NET UI 自动化框架。所以到目前为止我做了什么(参考各种文章)
有一个 WinForm,上面有 Listbox、PictureBox、TextBox 和 Button 控件。请参考图片:
我有一个控制台应用程序,其中包含所有 UI 自动化测试脚本或代码,可以自动执行 winform UI 测试。
工作: 从列表框中选择项目后,图片框会加载一些图像并显示它(要加载的代码在列表框的 SelectedIndexChanged 事件中)。
下面是 Forms listBox 控件的代码:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.BackColor = Color.White;
pictureBox1.Image = imageCollection.ElementAtOrDefault(listBox1.SelectedIndex);
textBox1.Text = pictureBox1.Image.GetHashCode().ToString();
this.Refresh();
}
现在我的 UIAutomation 测试脚本代码如下:(只显示了必要的部分)
AutomationElement listBoxElement = mainFormWindowElement.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.AutomationIdProperty, "listBox1"));
Assert.IsNotNull(listBoxElement, "Cant find the listbox element");
AutomationElementCollection listBoxItems =
listBoxElement.FindAll(TreeScope.Children,new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.ListItem));
AutomationElement itemToSelectInListBox = listBoxItems[new Random().Next(0, listBoxItems.Count - 1)];
Object selectPattern = null;
if (itemToSelectInListBox.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectPattern))
{
(selectPattern as SelectionItemPattern).AddToSelection();
(selectPattern as SelectionItemPattern).Select();
}
执行代码后,Select() 方法确实有效,并且 Form 列表框项被选中,如下所示:
正如您在图像中看到的,列表框项目被选中,但事件 SelectedIndexChange 没有被触发,并且图片框没有反映更改。
所以任何指针都有很大的帮助:)
谢谢