在为AutomationElement使用FindFirst或FindAll方法后找不到控件

时间:2012-06-13 06:58:02

标签: wpf ui-automation

我为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

0 个答案:

没有答案