Инструменты для автоматизации приложений Windows (желательно на Python)? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть устаревшее приложение для Windows, которое выполняет важную бизнес-функцию.У него нет API или официальной поддержки для автоматизации.Эта программа требует от человека выполнения последовательности действий для преобразования файлов в определенном формате ввода в PDF-файл, из которого мы можем очистить содержимое и затем обработать данные в обычном режиме.

Бизнес буквально не может функционировать безнекоторые вычисления / отчеты, которые выполняет это программное обеспечение, но, к сожалению, эти вычисления плохо поняты, и у нас нет такого бюджета на исследования и разработки, который позволил бы нам повторно внедрить программное обеспечение.

Программное обеспечение считывает взапатентованный формат файла и генерирует ряд отчетов в формате PDF в одобренном промышленном формате, из которого мы можем очистить изображения и обработать их более традиционным способом.

Было предложено заключить приложение в некий API, где я мог бы отправить некоторые входные данные в очередь, и где-то глубоко внутри этого мы автоматизируем программное обеспечение, как если бы пользователь управлялэто для выполнения операций.

К сожалению, операции являются сложными и зависят от количества входных данных, а также от содержимого обрабатываемого файла.Это не та вещь, которую мы могли бы сделать с простым макросом - для моделирования поведения обученного человека-оператора потребуется некоторая логика.

Так есть ли какие-нибудь решения для этого?Мы хотели бы иметь возможность управлять программным обеспечением как можно быстрее, и, поскольку у нас много разработчиков Python, имеет смысл реализовать как можно больше на Python.Внешние слои этой системы также будут в Python, так что это может сократить сложность.Существуют ли какие-либо инструменты, которые уже обеспечивают основную часть такого поведения?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

У вас есть несколько вариантов:

1. winshell: A light wrapper around the Windows shell functionality
2. Automa: Utilty to automate repetitive and/or complex task 
3: PyAutoGUI is a Python module for programmatically controlling the
mouse and keyboard.
4. Sikuli automates anything you see on the screen http://www.sikuli.org/
5. pure Python scripting. example below:  

import os os.system('notepad.exe')
import win32api
win32api.WinExec('notepad.exe')

import subprocess
subprocess.Popen(['notepad.exe'])
0 голосов
/ 16 октября 2018

Самый простой подход к автоматизации приложения - отправлять на него нажатия клавиш.Если вы можете управлять целевым приложением одним нажатием клавиши, управление им становится управляемым без необходимости бороться с разрешениями экрана, большими шрифтами и позициями мыши.[1]

Более сложная часть распознает отображаемое состояние приложения.В идеале вы можете прочитать содержимое элементов управления с помощью Python [2], чтобы, по крайней мере, обнаружить условия ошибки и вернуть программу в известное исправное состояние.Если сброс программы с помощью обычной навигации завершится неудачно, рассмотрите возможность уничтожения целевого процесса и перезапустите процесс.

[1] Как отправить смоделированные нажатия клавиш в активное окно с помощью SendKeys

[2] Проблема при получении содержимого списка с python и ctypes на win32

0 голосов
/ 16 октября 2018

Испытайте инструменты автоматизации Robotic, которые могут имитировать или записывать взаимодействие человека с компьютером и повторяться с течением времени.Это может быть сделано для обработки более сложных задач с использованием сценариев, в зависимости от этого программного обеспечения.Пример выбора различных входов, компонентов браузера, а также приложения Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...