Нажмите кнопки, используя AutomationID в AutoIT - PullRequest
0 голосов
/ 05 сентября 2018

Я автоматизирую приложение VB6 с помощью AutoIT и столкнулся с некоторыми проблемами.

Приложение имеет окно «Наборы инструментов», которое содержит элемент управления SSTab с 18 вкладками в 6 строках. Существует более 100 экземпляров класса ThunderRT6CommandButton. Мой скрипт AutoIT должен взаимодействовать с определенными кнопками, и до сих пор я использовал ControlClick:

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

Проблема в том, что когда я переключаюсь на другую вкладку и закрываю окно с наборами инструментов, приложение запоминает, какая вкладка была открыта. Это означает, что в следующий раз, когда я открою окно с наборами инструментов, вкладки будут инициированы в другом порядке, и все номера экземпляров кнопок изменились. Я даже не могу позвонить ControlClick и указать текст кнопки, которую нужно нажать, потому что она не уникальна; около 20 кнопок просто помечены «Применить».

Использование Inspect.exe Я заметил, что у каждой кнопки есть уникальный AutomationID, который является постоянным даже при закрытии и повторном открытии окна инструментов после перетасовывания вкладок.

Можно ли каким-либо образом нажимать кнопки, используя их AutomationID в AutoIT?

Единственное другое исправление, о котором я могу подумать, - заставить скрипт AutoIT запускать само приложение, чтобы при каждом запуске скрипта наборы инструментов были в одном и том же порядке.

1 Ответ

0 голосов
/ 05 сентября 2018

Инструмент Окно AutoIT Info показывает AutomationID, но называет его «ID»:

Я изменил свой скрипт, чтобы включить ID:## вместо номера экземпляра, и он работает:

ControlClick($sToolboxes, '', '[CLASS:ThunderRT6CommandButton; ID:245]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...