首页 > 解决方案 > 在 AutoIT 中使用 AutomationID 单击按钮

问题描述

我正在使用 AutoIT 自动化一个 VB6 应用程序并且遇到了一些问题。

该应用程序有一个“工具箱”窗口,其中包含一个SSTab6 行中有 18 个选项卡的控件。该类有 100 多个实例ThunderRT6CommandButton。我的 AutoIT 脚本应该与特定按钮交互,到目前为止我一直在使用ControlClick

ControlClick($sToolboxes, '', '[CLASS:ThunderRT6CommandButton; INSTANCE:81]')

问题是,当我更改为不同的选项卡并关闭工具箱窗口时,应用程序会记住打开了哪个选项卡。这意味着下次我打开工具箱窗口时,选项卡将以不同的顺序启动,并且按钮的所有实例编号都已更改。我什至不能调用ControlClick并指定要单击的按钮的文本,因为这不是唯一的;大约 20 个按钮被简单地标记为“应用”。

使用Inspect.exe我注意到每个按钮都有一个唯一AutomationID性,即使在改变标签后关闭和重新打开工具箱窗口时也是如此。

有什么方法可以让我在 AutoIT 中使用它们的 AutomationID 单击按钮?

我能想到的唯一其他解决方法是让 AutoIT 脚本启动应用程序本身,以便每次脚本运行时工具箱的顺序相同

标签: autoit

解决方案


AutoIT Window Info 工具显示AutomationID,但称其为“ID”:

我将脚本更改为包含ID:##而不是实例编号,它可以工作:

ControlClick($sToolboxes, '', '[CLASS:ThunderRT6CommandButton; ID:245]')

推荐阅读