我正在使用White for UI automation并且它工作正常,直到我遇到了一个用Java创建的应用程序。在那种情况下,我找不到任何窗户。如果我从桌面上获取所有Windows,那么我可以看到我正在寻找的窗口名称:
List<White.Core.UIItems.WindowItems.Window> windows = new List<White.Core.UIItems.WindowItems.Window>();
windows = White.Core.Desktop.Instance.Windows();
int a = 0;
for (int i = 0; i < windows.Count; i++)
if (windows[i].Name == "HP Service Manager Client") a = i;
这是有效的,但是如果我附加正在运行的进程并尝试获取其窗口,那么我什么也得不到,列表将为空:
windows=app.GetWindows();
这是应该找到主窗口的代码:
var processes = Process.GetProcessesByName("ServiceManager");
White.Core.Application app = White.Core.Application.Attach(processes[0]);
White.Core.UIItems.WindowItems.Window main = app.GetWindow(SearchCriteria.ByText("HP Service Manager Client"), InitializeOption.NoCache);
我得到的错误:附加信息:在等待5000毫秒后,无法在进程7396中找到带有SearchCriteria Name = HP Service Manager Client的窗口
我可以在VisualUIAVerify中看到Window,我知道它的名称是正确的。 这是唯一不起作用的应用程序,IE,Firefox等都运行正常,我总能识别主窗口,但这次我找不到任何窗口。
我想知道是否有人可以解释我为什么这样做并帮助我解决这个问题(或找到解决方法)。非常感谢提前。