在AutoIT中使用AutomationID单击按钮

时间:2018-09-05 10:21:08

标签: autoit

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

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

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

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

使用 Inspect.exe ,我注意到每个按钮都有一个唯一的AutomationID,即使在重新排列标签后关闭并重新打开工具箱窗口,该按钮也保持不变。

有什么方法可以在AutoIT中使用其AutomationID单击按钮?

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

1 个答案:

答案 0 :(得分:0)

AutoIT窗口信息工具显示AutomationID,但将其称为“ ID”:

我将脚本更改为包括ID:##而不是实例编号,并且可以正常工作:

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