我想在c#中使用Teststack White和System.Windows.Automation自动化.NET WinForm应用程序。
在MdiClient
下一次有几个打开的窗口,我想获取在MdiClient下打开的所有子窗口的列表。
我试试:
var window = application.GetWindows().Find(obj => obj.Title.StartsWith("Helios Green"));
window.Focus(DisplayState.Maximized);
AutomationElementCollection allChildren =
window.AutomationElement.FindAll(TreeScope.Children,
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
但是这会返回空集合,因为MdiChlidren Windows不是主窗口的直接子节点,但它们之间有一个MdiClient类名= WindowsForms10.MDICLIENT.app.0.33c0d9d
,如Inspect中所示。
如何获取所有已打开的MDI子窗口的列表?
答案 0 :(得分:0)
我能够解决这个问题:
AutomationElementCollection allChildren =
window.AutomationElement.FindAll(TreeScope.Children,
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Pane));
AutomationElementCollection subwindows =
allChildren[0].FindAll(TreeScope.Children,
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
MDIClient是主窗口中的第一个窗格。