首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问未实现AutomationPeer类的WPF自定义控件的内部元素?

如何访问未实现AutomationPeer类的WPF自定义控件的内部元素?
EN

Stack Overflow用户
提问于 2011-02-09 09:43:22
回答 1查看 4.3K关注 0票数 1

最近我从这篇文章中得知-

http://blogs.msdn.com/b/patrickdanino/archive/2009/11/11/custom-controls-and-ui-automation.aspx

WPF中的-that控件负责公开它们的UIA项,并且任何新添加的自定义控件的功能在通过相应的AutomationPeer类的实现公开之前都是不可用的。在我的工作中,我被分配到使用大量ToolBars的WPF应用程序的UI测试自动化。问题是,通过Microsoft自动化库,我可以将ToolBars (显然是作为自定义控件开发的)访问为AutomationElements,但我不能访问其中的按钮--计数子/后代集合总是返回0。使用编码的UI测试时,测试总是失败,并显示以下错误消息:

测试方法CAM2QDummyTest.CodedUITest2.CodedUITestMethod1抛出异常: Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException:另一个控件正在阻塞该控件。请使被阻止的控件可见并重试此操作。其他详情: TechnologyName:“MSAA” 名称:“标准” ControlType:'ToolBar‘ -> System.Runtime.InteropServices.COMException: HRESULT的异常: 0xF004F003

显然,它们没有实现相应的AutomationPeer类。现在,我只有应用程序,没有源代码。所以我不能用上面提到的方法来解决这个问题。有人能帮我提供任何线索吗?我怎样才能访问ToolBars的内部按钮?如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-09 12:49:34

您可以查看通过AutomationElement.GetSupportedProperties()AutomationElement.GetSupportedPatterns()支持哪些模式和属性,以查看是否可以使用不同的模式。可能有列表元素等通过SelectionPattern或类似的,这将使您访问按钮。

否则,与供应商取得联系,并要求他们添加相关的同行。

您可以始终获得坐标(可能通过BoundingRectangleProperty),然后使用Win32函数在适当的位置模拟鼠标单击。令人讨厌。这个帖子可能会有帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4943137

复制
相关文章

相似问题

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