wxWidgets和UI自动化

我有一个使用wxWidgets的小应用程序,运行在MS Windows上。 我正在使用UI自动化进行自动化testing。 大多数情况下,这是相当不错的。 不过,我碰到了一个麻烦。

对于大多数小部件来说,UIA“Name”属性似乎与小部件上的任何文本匹配。 (我不知道wxWidgets是否这样做,或者UIA是否这样做。)但对于图像button…是的,没有文字。 所以我想要做的是为这些小部件添加一些属性,使它们通过UIA唯一标识,而不会改变GUI的外观。

我曾经希望只要在窗口devise器中设置“名称”属性就可以做到这一点…但可惜的是不。 任何想法如何我可以解决这个问题?

该名称不在MS Windows级别使用。 唯一的是ID,所以如果你使用固定的唯一ID(而不是在创建窗口时指定wxID_ANY ),你应该能够在运行时从窗口找到窗口。

编辑: ID可以使用AutomationIdProperty从UIA查询,如下所示:

 string id = (string)widget.GetCurrentPropertyValue(AutomationElement.AutomationIdProperty); 

通常这个字符串是十进制数,但并不总是。