当前位置: 首页 > 编程语言 > C#

C#System.Windows.Automation获取元素文本分享

时间:2023-04-10 11:54:11 C#

C#学习教程:C#System.Windows.Automation获取元素文本到目前为止,我能够使用此函数获得AutomationElement应用程序树(例如记事本):privatevoidWalkControlElements(AutomationElementrootElement,TreeNodetreeNode){while(elementNode!=null){TreeNodechildTreeNode=treeNode.Nodes.Add(elementNode.Current.ControlType.LocalizedControlType);//这里我想从'elementNode'获取文本WalkControlElements(elementNode,childTreeNode);elementNode=TreeWalker.ControlViewWalker.GetNextSibling(elementNode);我试着按照这篇文章http://msdn.microsoft.com/en-us/library/ms788751(v=vs.110).aspx但它只能获取字体名称、字体粗细等文本属性。可以有人指出正确的程序如何使用自动化获取元素文本?此示例向您展示如何获取文本属性,即有关文本在UI中显示的信息,而不是实际显示的文本。获取一般应用程序的所有实际显示文本比最初看起来要困难得多。这很难做到,因为有多种方法可以获取文本,而且应用程序和控件的支持也不一致。有两种模式可用,ValuePattern和TextPattern。按照惯例,Name属性包含显示给用户的文本,但对此的遵守是不一致的。下面是我用于UI自动化测试的辅助方法。它基本上通过这些模式检查控件的支持并回退到名称。publicstaticclassAutomationExtensions{publicstaticstringGetText(这个AutomationElement元素){objectpatternObj;if(element.TryGetCurrentPattern(ValuePattern.Pattern,outpatternObj)){varvaluePattern=(ValuePattern)patternObj;returnValuePattern.Current;}if(element.TryGetCurrentPattern(TextPattern.Pattern,outpatternObj)){vartextPattern=(TextPattern)patternObj;返回textPattern.DocumentRange.GetText(-1).TrimEnd('r');//通常有一个额外的'r'挂在最后。}else{返回元素.Current.Name;这处理带有文本的简单控件,例如标签、文本框(包括普通文本框和富文本框)和按钮。列表框和组合框(尤其是在WPF中)等控件可以很简单,因为它们的项目可以虚拟化,因此在用户与它们交互之前它们可能不存在于自动化树中。您可能希望仅在某些UI自动化控件类型(如编辑、文本和包含文本的文档)上筛选和调用此方法。以上就是C#学习教程:C#System.Windows.Automation获取元素文本分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: