Подтвердить что ты не робот

Вождение программы графического интерфейса Windows из script

Мне нужно использовать пакет симуляции Windows для выполнения повторяющейся задачи с несколько разными параметрами каждый раз.

Так как я ненавижу повторный щелчок, по причине лени и количества ошибок, которые вводит человек, я хотел бы автоматически управлять этой программой. В рассматриваемой программе не поддерживается сценарий, нет API, нет COM, nada, nyet, nravin. Насколько я могу судить, единственный способ автоматически управлять этой программой - подражать человеку (например, клавиатуре и мышиному макросу).

Я знаю AutoHotKey, но я не думаю, что он делает то, что я хочу. (Или это может сделать то, что я хочу, но его язык сценариев ужасен.)

Требования:

  • Должны допускать временные задержки между действиями или обнаружение событий для запуска действий.

    Моделирование может занять до десяти минут, поэтому драйвер GUI должен будет подождать, пока симуляция не закончится, прежде чем начинать новый.

    Один из способов сделать это - просто подождать десять минут и надеяться, что имитация закончится. Альтернативный способ состоит в том, чтобы сделать его управляемым событиями, т.е. Наблюдать за диалогом "Имитация запуска...", чтобы исчезнуть и быть заменены диалогом "Симуляция завершена".

  • Должен разрешить состав сложного ввода клавиатуры.

    Некоторые требуемые ввод клавиатуры различны для каждого запуска симуляции. Например, описание моделирования может иметь формат [Project name][Scenario name][Option 1][Option 2]..., и это нужно было бы ввести для каждой моделировки.

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

  • Это для работы, поэтому любое решение должно быть бесплатным для коммерческого использования.

Я соглашусь с любым решением, которое соответствует указанным выше критериям, но у меня есть strong предпочтение для того, что я могу управлять с Python. Однако я бы также согласился с автоматическими инструментами для тестирования GUI, которые я мог бы настроить, чтобы делать то, что я хочу - возможно, эквивалент Win32 GUI Selenium для браузеров? - клавиатурные макрорекордеры, которые будут генерировать пользовательский вывод или что-то еще, что работает.

4b9b3361

Ответ 1

Дайте Autohotkey еще один взгляд, из ваших требований он подходит для работы.

Альтернативно проверять автоматизацию пользовательского интерфейса от Microsoft: http://msdn.microsoft.com/en-us/library/ms747327.aspx, а также белый: http://white.codeplex.com/

Ответ 2

Sikuli - это визуальная технология для автоматизации и тестирования графического пользователя интерфейсов (GUI) с использованием изображений (снимки экрана). Сикули включает в себя Сикули Script, визуальный скриптовый API для Jython и Sikuli IDE, интегрированная среда разработки для написания визуальных сценариев с скриншоты легко. Sikuli Script автоматизирует все, что вы видите на экран без внутренней поддержки API. Вы можете программно управлять веб-страницей, рабочим столом Windows/Linux/Mac OS X или даже приложение iphone или андроида, работающее в симуляторе или через VNC.

Посмотрите Sikuli, это сработало для меня.

Ответ 3

Взгляните на Automa - он написан на Python. Его можно использовать либо как автономный инструмент, либо как библиотеку Python в ваших собственных сценариях:

from automa.api import *

Он позволяет автоматизировать любое приложение Windows с помощью таких команд, как щелчок, нажатие, запись и т.д.

Некоторые примеры сценариев автоматизации можно найти в http://www.getautoma.com/blog/category/ui-automation-examples

Отказ от ответственности: я один из разработчиков Automa.

Ответ 4

Посмотрите на это https://pywinauto.github.io/

Вы можете использовать сам python script для управления вашим окном.

Преимущество:

  • Не нужно изучать новый язык/синтаксис
  • легко интегрируется с другими существующими script

Ответ 5

RIATest не использует Python, но в ином случае подходит для счета. Это похоже на Selenium, но для Win32 и.

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

Отказ от ответственности: я работаю в Cogitek, компании RIATest.

Ответ 6

Вы можете использовать библиотеку PyAutoGUI для Python, которая работает на Windows, macOS и Linux.

Должны допускать задержки времени между действиями.

Пример для ввода с четверть-секундной паузой между каждой клавишей:

import pyautogui
pyautogui.typewrite('Hello world!', interval=0.25)

Вот пример, чтобы установить 2,5-секундную паузу после каждого вызова PyAutoGUI:

pyautogui.PAUSE = 2.5

Должен разрешить состав сложного ввода клавиатуры.

Оформить заказ функции управления клавиатурой, где вы можете использовать pyautogui.typewrite для ввода чего-либо. Вы можете передавать переменные, чтобы разрешить сложный ввод с клавиатуры.

Обнаружение событий для запуска действий.

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

Решение должно быть бесплатным для коммерческого использования.

Он лицензируется под BSD, который разрешает коммерческое использование.


См. также: