我有一个使用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);
通常这个字符串是十进制数,但并不总是。