首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用TestStack.White获取窗口

如何使用TestStack.White获取窗口
EN

Stack Overflow用户
提问于 2016-06-15 07:01:06
回答 1查看 5.2K关注 0票数 1

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

代码语言:javascript
复制
Window win = Desktop.Instance.Windows().Find(...);

但是,当获取子窗口时会出现异常:

代码语言:javascript
复制
IUIItem item = win.Get(SearchCriteria.ByText("The Name"));

TestStack.White.AutomationException类型的未处理异常发生在TestStack.White.dll中 附加信息:未能获得Name=The名称

来自Inspect.exe的子窗口信息:

代码语言:javascript
复制
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那里找到太多的信息。我怀疑这是因为子窗口不是一个自动化控件。

EN

回答 1

Stack Overflow用户

发布于 2016-12-15 17:19:28

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

代码语言:javascript
复制
TestStack.White.Application app = TestStack.White.Application.Launch(applicatonFullPath);

然后,您应该获得应用程序的主窗口:

代码语言:javascript
复制
mainWinDow = app.GetWindows().FirstOrDefault(w => w.Name == "YOUR MAIN WINDOW NAME");

你的子窗口可能是一个模态窗口。你可以像他一样得到它:

代码语言:javascript
复制
var modalWindows = mainWinDow.ModalWindows();

modalWindow = modalWindows.Where(x => x.Name == "The Name").FirstOrDefault();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37828210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档