我正在使用White 进行 UI 自动化,它运行良好,直到我遇到一个用 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 中看到窗口,并且我知道它的名称是正确的。这是唯一一个不工作的应用程序,IE,Firefox等都工作正常,我总是可以识别主窗口,但这次我根本找不到任何窗口。
我想知道是否有人可以解释我为什么这样做并帮助我解决这个问题(或找到解决方法)。提前谢谢了。