我为wpf应用程序自动化ui测试。 我试图找到控件,在做了一些步骤后,但总是当我使用FindFirst或FindAll方法时,窗口中的许多控件都会丢失。现在,我做了一个实验: 第一部分:
System.Diagnostics.Process.Start(@"C:\application.exe");
Thread.Sleep(2000);
Condition windowCondition = new PropertyCondition(AutomationElement.NameProperty, "Window Title");
AutomationElement window = AutomationElement.RootElement.FindChildByCondition(windowCondition);
window.SetFocus();
int x = 512;
int y = 384;
SetCursorPos(x, y);
// Click on coordinates:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
之后,我可以找到我需要的所有控件,所有工具(UISpy,UIAVerify和其他工具)都可以找到所有控件。
第2部分: 我只添加2个字符串:
System.Diagnostics.Process.Start(@"C:\application.exe");
Thread.Sleep(2000);
Condition windowCondition = new PropertyCondition(AutomationElement.NameProperty, "Window Title");
AutomationElement window = AutomationElement.RootElement.FindChildByCondition(windowCondition);
// New strings here:
Condition controlCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "ConnectButton");
AutomationElement control = window.FindFirst(TreeScope.Descendants, controlCondition);
window.SetFocus();
int x = 512;
int y = 384;
SetCursorPos(x, y);
// Click on coordinates:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
现在,我可以发现那些控件并不是真的可见,而那些可见的 - 没有被检测到。
什么错了? THX