我已经通过调用获得了顶层窗口:
Window win = Desktop.Instance.Windows().Find(...);但是,当获取子窗口时会出现异常:
IUIItem item = win.Get(SearchCriteria.ByText("The Name"));TestStack.White.AutomationException类型的未处理异常发生在TestStack.White.dll中 附加信息:未能获得Name=The名称
来自Inspect.exe的子窗口信息:
Name: "The Name"
ControlType: UIA_PaneControlTypeId (0xC371)
LocalizedControlType: "Dialog"
BoundingRectangle: {l:96 t:38 r:1917 b:1078}
IsEnabled: true
IsKeyboardFocusable: false
HasKeyboardFocus: false
ProcessId: 15496
RuntimeId: [2A.140BD8]
FrameworkId: "Win32"
ClassName: "#32770"
NativeWindowHandle: 0x140BD8
IsControlElement: false
IsContentElement: false
ProviderDescription: "[pid:14492,hwnd:0x140BD8 Main:Microsoft: Container Proxy (unmanaged:uiautomationcore.dll); Nonclient:Microsoft: Non-Client Proxy (unmanaged:uiautomationcore.dll); Hwnd(parent link):Microsoft: HWND Proxy (unmanaged:uiautomationcore.dll)]"
LegacyIAccessible.ChildId: 0
LegacyIAccessible.Name: "The Name"
LegacyIAccessible.Role: Dialog (0x12)
LegacyIAccessible.State: (0x100000)
IsAnnotationPatternAvailable: false
IsDragPatternAvailable: false
IsDockPatternAvailable: false
IsDropTargetPatternAvailable: false
IsExpandCollapsePatternAvailable: false
IsGridItemPatternAvailable: false
IsGridPatternAvailable: false
IsInvokePatternAvailable: false
IsItemContainerPatternAvailable: false
IsLegacyIAccessiblePatternAvailable: true
IsMultipleViewPatternAvailable: false
IsObjectModelPatternAvailable: false
IsRangeValuePatternAvailable: false
IsScrollItemPatternAvailable: false
IsScrollPatternAvailable: false
IsSelectionItemPatternAvailable: false
IsSelectionPatternAvailable: false
IsSpreadsheetItemPatternAvailable: false
IsSpreadsheetPatternAvailable: false
IsStylesPatternAvailable: false
IsSynchronizedInputPatternAvailable: false
IsTableItemPatternAvailable: false
IsTablePatternAvailable: false
IsTextChildPatternAvailable: false
IsTextEditPatternAvailable: false
IsTextPatternAvailable: false
IsTextPattern2Available: false
IsTogglePatternAvailable: false
IsTransformPatternAvailable: false
IsTransform2PatternAvailable: false
IsValuePatternAvailable: false
IsVirtualizedItemPatternAvailable: false
IsWindowPatternAvailable: false我没有从TestStack.White https://github.com/TestStack/White那里找到太多的信息。我怀疑这是因为子窗口不是一个自动化控件。
发布于 2016-12-15 17:19:28
首先,寻找所有桌面窗口不是一个好主意。您应该启动应用程序提供应用程序路径:
TestStack.White.Application app = TestStack.White.Application.Launch(applicatonFullPath);然后,您应该获得应用程序的主窗口:
mainWinDow = app.GetWindows().FirstOrDefault(w => w.Name == "YOUR MAIN WINDOW NAME");你的子窗口可能是一个模态窗口。你可以像他一样得到它:
var modalWindows = mainWinDow.ModalWindows();
modalWindow = modalWindows.Where(x => x.Name == "The Name").FirstOrDefault();https://stackoverflow.com/questions/37828210
复制相似问题