【问题标题】:wxWidgets and UI AutomationwxWidgets 和 UI 自动化
【发布时间】:2014-02-03 14:54:21
【问题描述】:

我有一个使用 wxWidgets 的小型应用程序,在 MS Windows 上运行。我正在使用 UI 自动化进行自动化测试。在大多数情况下,这进展顺利。但是,我遇到了障碍。

对于大多数小部件,UIA“名称”属性似乎与小部件上的任何文本相匹配。 (我不知道 wxWidgets 是否这样做或 UIA 是否这样做。)但是对于图像按钮......是的,没有文字。所以我想做的是为这些小部件添加某种属性,使它们可以通过 UIA 唯一识别,而不会改变 GUI 的视觉外观。

我曾希望在窗口设计器中简单地设置“名称”属性就可以做到这一点……但遗憾的是没有。有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: windows wxwidgets ui-automation


    【解决方案1】:

    该名称未在 MS Windows 级别使用。唯一的就是 ID,因此如果您使用固定的唯一 ID(而不是在创建窗口时指定 wxID_ANY),您应该能够在运行时从它们中找到窗口。

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

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

    通常字符串是十进制数,但并非总是如此。

    【讨论】:

    • ID 似乎已经固定。 (看起来很随意,但已修复。)知道我需要在 UIA 中的什么地方进行挖掘吗?
    • 在答案中添加了必要的代码 + 接受的答案。
    • 请注意,当然,您总是有 一些 个 ID,但如果源使用 wxID_ANY,则下次运行时 ID 可能会有所不同,除非所有的创建顺序windows 完全一样。
    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 2022-11-10
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2011-03-10
    相关资源
    最近更新 更多