使用TestStack.White获得Caret的位置

问题描述 投票:1回答:1

我使用White获取Microsoft Word窗口,将文档作为TextBox,如下所示:

Application a = Application.Attach(0x0000AC34);
Window w = a.GetWindow("Document1 - Word", InitializeOption.WithCache);
TextBox doc = w.Get<TextBox>(SearchCriteria.ByControlType(ControlType.Document));

有没有办法获得插入符号的位置?我对屏幕坐标和文本中的位置感兴趣。

理想情况下,我在White寻找一些东西。

如果没有,我知道我可以依靠AutomationElementTextPattern即。

TextPattern tp = doc.AutomationElement.GetCurrentPattern(TextPattern.Pattern) as TextPattern;
TextPatternRange[] selectionRanges = tp.GetSelection();
// etc...

这样做有什么缺点吗?我应该考虑更好的选择吗?

有没有办法可以访问IUIAutomationTextPattern2界面?

c# ui-automation microsoft-ui-automation white
1个回答
0
投票

您无法在TestStack.White中执行此操作,因为TestStack.White仅包装托管的UIAv2 API。使用FlaUI你可以做到这一点,因为他们有UIAv2和UIAv3的包。这是他们围绕UIAv3 COM dll编写的wrapper

© www.soinside.com 2019 - 2024. All rights reserved.