使用TestStack.White获得Caret职位

时间:2019-02-28 12:44:53

标签: c# ui-automation microsoft-ui-automation white

我正在使用White来获取Microsoft Word窗口和文档作为文本框,如下所示:

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界面?

1 个答案:

答案 0 :(得分:0)

您将无法在TestStack.White中执行此操作,因为TestStack.White仅包装了托管的UIAv2 API。使用FlaUI,您将能够执行此操作,因为它们具有UIAv2和UIAv3的软件包。这是他们围绕UIAv3 COM dll编写的wrapper