繁体   English   中英

如何使用TestStack.White获取窗口

[英]How to get window using TestStack.White

我已经通过调用获得顶层窗口:

Window win = Desktop.Instance.Windows().Find(...);

但是获取子窗口时会发生异常:

IUIItem item = win.Get(SearchCriteria.ByText("The Name"));

TestStack.White.dll中发生了类型为'TestStack.White.AutomationException'的未处理异常

附加信息:无法获取名称=名称

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找到太多信息。 我怀疑这是因为子窗口不是自动化控件。

首先,查找所有桌面窗口不是一个好主意。 您应该启动应用程序,并提供应用程序路径:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM