我使用MSAA服务器(Miscrosoft Active Active)打开一个控件,以便使用编码的UI对其进行自动化测试。我之所以使用MSAA,是因为代码是为VS2008编写的,因此UI自动化不可用。
除了在同一窗口上有两个控制元素的情况外,它工作得很好。问题在于生成的UI Map层次结构。这是错误的,但在这种情况下,当你处理一个控制,工作正常。
使用MSAA示例的问题可以在sdk上找到:
Microsoft的MSAA服务器示例
所以,当我映射窗口时,我得到了正确的映射,但是当我在列表中映射一个元素时,元素是正确的,但是没有映射到列表中:
映射事件和断言的编码UI映射
我的应用程序中也有同样的问题。
谢谢
发布于 2014-08-06 09:25:30
我已经修正了在创建新对象时使用静态std::map<string,int>获取标识符的问题。
因此,当创建一个新对象时,我使用当前窗口标题查询静态结构(我知道这是一个危险的操作,但它有效),并获得一个新的标识符。
当调用MSAA方法:accValue时,返回标识符
我将编码-ui的值搜索属性添加到该属性中,它按照我的预期工作。
发布于 2014-08-22 07:48:27
我没有添加和回答Windows : WM_GETOBJECT,而是覆盖了CWnd类中的可访问方法。
问题是get CWnd::get_accName( VARIANT,BSTR *pszName)返回的名称在窗口的所有窗口中都是相同的,所以我在类中修改了这个方法,以添加一些额外的信息来标识我的元素。
而且它是有效的。
https://stackoverflow.com/questions/24864770
复制相似问题