Управление программой Windows GUI из скрипта - PullRequest
22 голосов
/ 14 марта 2012

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

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

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

Требования:

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

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

    Один из способов сделать это - подождать десять минут и надеяться, что симуляция закончена. Альтернативный способ состоит в том, чтобы сделать его управляемым событиями, то есть следить за тем, чтобы диалоговое окно «Simulation running ...» исчезло и было заменено диалоговым окном «Simulation complete».

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

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

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

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

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

Ответы [ 6 ]

11 голосов
/ 14 марта 2012

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

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

6 голосов
/ 12 марта 2013

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

from automa.api import *

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

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

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

5 голосов
/ 14 марта 2012

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

В качестве альтернативы проверьте UI Automation от Microsoft: http://msdn.microsoft.com/en-us/library/ms747327.aspx, а также белый: http://white.codeplex.com/

4 голосов
/ 08 января 2017

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

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

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

  • нет необходимости изучать новый язык / синтаксис
  • легко интегрируется с другим существующим скриптом
1 голос
/ 07 января 2018

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

Необходимо разрешить временные задержки между действиями.

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

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

Вот пример установки 2.5-секундной паузы после каждого вызова PyAutoGUI:

pyautogui.PAUSE = 2.5

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

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

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

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

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

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


Смотри также:

0 голосов
/ 09 мая 2013

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

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

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

...