最近我从这篇文章中得知-
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的内部按钮?如有任何建议,将不胜感激。
发布于 2011-02-09 12:49:34
您可以查看通过AutomationElement.GetSupportedProperties()和AutomationElement.GetSupportedPatterns()支持哪些模式和属性,以查看是否可以使用不同的模式。可能有列表元素等通过SelectionPattern或类似的,这将使您访问按钮。
否则,与供应商取得联系,并要求他们添加相关的同行。
您可以始终获得坐标(可能通过BoundingRectangleProperty),然后使用Win32函数在适当的位置模拟鼠标单击。令人讨厌。这个帖子可能会有帮助。
https://stackoverflow.com/questions/4943137
复制相似问题