Доступно об AutoIt
AutoIt — это BASIC’овидный язык программирования, на котором можно создавать боты (имитация действия пользователя) для автоматизации таких работ, т.е управлять другими приложениями (запускать их, нажимать в них кнопки, менюшки…).
AutoIt умеет:
— Симулировать нажатия комбинаций клавиатуры (поддерживается основная масса раскладок клавиатуры);
— Симулировать перемещения указателя мыши и нажатия на ее кнопки;
— Перемещать, менять размер и управлять параметрами отображения окон;
— Непосредственно взаимодействовать с «управляющими элементами» (controls) окна (получать/менять надпись, перемещать, отключать, и т.п. действия);
— Работать с буфером обмена для пересылки его текстового содержания;
— Читать, менять и создавать ключи и значения реестра.
Новая версия AutoIt3 распознает общепринятые конструкции и имеет стандартный синтаксис, напоминающий синтаксис VBScript и BASIC, и поддерживает обработку сложных выражений, выполнение собственных функций, проводит циклические и условные вычисления.
И самым знаменательным является тот факт, что AutoIt остается бесплатным.
Какой софт нужен для работы с AutoIt? (практический опыт использования одного из наших коллег)
Нужный софт можно скачать с официального сайта AutoIt. Мне поступило задание выгрузить полный пакет документов по заданному пулу клиентов из автоматизированной системы (АС). Данная выгрузка была очень трудозатратной для пользователя, т.к. приходилось обрабатывать каждого клиента, т.е. проделывать множество раз одни и те же операции. Для написания и редактирования скриптов (расширение au3) я использовал специальный редактор SciTE, который входит в пакет Autoit. В Редакторе удобно проверять правильность синтаксиса и кодировку au3-файла, осуществлять отладку по шагам, компиляцию (Ctrl+F5 — проверка синтаксиса, F4 — переход к следующей ошибке, Ctrl+F7 – компиляция и др..). Так же в состав пакета входят уже готовые функции для работы с определенными объектами (Excel, Word, Массивы, файлы, окна и др.) Подключить необходимые функции можно с помощью #include… , например, какие я использовал в своем скрипте:
Большой выбор функций конечно же можно найти в интернете.
Т.к. работа по выгрузке документов могла выполняться на мониторах с разным типом разрешения, то необходимо было занести данные по разрешениям мониторов, которые используются в организации, в специальный настроечный файл. Для этого я использовал INI-файл. Autoit работает с данным типом файлов и для этих целей есть пять функций:
IniDelete(«filename»,»section»[,»key»]) — удалить секцию или значение из ini-файла.
IniRead(«filename»,»section»,»key»,»default») — считать значение из ini-файла.
IniReadSection(«filename»,»section») — считать все пары секция/значение из ini-файла.
IniReadSectionNames(«filename») — считать имена всех секций из ini-файла.
IniWrite(«filename»,»section»,»key»,»value») — записать значение в ini-файл.
В начале работы определяется разрешение монитора:
И в зависимости от разрешения считываются координаты из настроечного INI-файла.
В настроечный файл записываются данные, необходимые в дальнейшей работе, например, адрес сервера, логин (без пароля), пути выгрузки, которые вы вводите в начале работы, далее чтение и запросы на ввод/изменение данных:
И отражение данных в INI-файле:
Данные по клиентам считываем из. XLSX файла:
Получив данные для выгрузки, начинаем работать с АС, т.е. организуем цикл по количеству клиентов и непосредственную выгрузку документов. В каждой АС есть определенные пункты меню, к которым можно получим доступ по определенным сочетаниям клавиш, например: Alt+F1, Alt+1, Ctrl+t, Ctrl+n… либо за сочетанием клавиш закреплены определенные действия в АС: проваливание в список, вывод на экран информации, формирование отчетов.
Далее организуем цикл по количеству клиентов, считанных из входного XLSX-файла:
Ниже представлен блок на обработку установки фильтра по типу документов:
Для определения координат окон, кнопок на экране, или их цвета (если это необходимо) используется приложение Autoit Window Info, которое входит в состав пакета.
Статистика выгрузки документов заносится в отдельный INI-фал, по каждому клиенту и типу документов, что выручает нас при аварийном завершении (например, зависание АС). Процесс выгрузки начинается с того клиента, на котором произошел сбой.
Если по какой-то причине не прошла выгрузка документа, например, очень долгий ответ от АС или зависание АС, то в INI-файл пишется информация о невыгруженном файле и времени записи в INI-файл:
Также интересен блок по обработке (т.е. выгрузке) файлов большого объема (более ~100 МБ), т.к. сохранение файлов такого объема из АС может занимать относительно значительное время. В данном случае работает цикл по считываю объема сохраняемого файла и сравнивается с реальным размером файла:
Я привел вашему вниманию основные блоки по обработке задачи, которая стояла перед скриптом Autolt.
В завершении, мне удалось автоматизировать процесс выгрузки требуемого пакета документов из АС с использованием AutoIt, что помогло разгрузить пользователя от однообразной и рутинной работы.
Программное обеспечение можно использовать для выполнения аналогичных повторяющихся задач. Спасибо за внимание.
Зачем, если есть python?
Да, Python может помочь решить практически все задачи. Как волшебная таблетка)
В AutoIt, которую в статье рассматривает - тоже плюсов.