python winapi user-interface automation gui-testing

python - Conducir un programa GUI de Windows desde un script



winapi user-interface (6)

Sikuli es una tecnología visual para automatizar y probar interfaces gráficas de usuario (GUI) utilizando imágenes (capturas de pantalla). Sikuli incluye Sikuli Script, una API de script visual para Jython, y Sikuli IDE, un entorno de desarrollo integrado para escribir scripts visuales con capturas de pantalla fácilmente. Sikuli Script automatiza todo lo que ve en la pantalla sin el soporte interno de la API. Puede controlar mediante programación una página web, una aplicación de escritorio de Windows / Linux / Mac OS X, o incluso una aplicación de iPhone o Android que se ejecute en un simulador o mediante VNC.

Mira a Sikuli , funcionó para mí.

Tengo que usar un paquete de simulación de Windows para realizar una tarea repetitiva con opciones ligeramente diferentes cada vez.

Ya que odio los clics repetitivos, tanto por la pereza como por la cantidad de errores que un ser humano presenta, me gustaría conducir este programa automáticamente. El programa en cuestión no admite scripts, no hay API, no COM, nada, nyet, nravin. Por lo que puedo decir, la única forma de conducir este programa automáticamente es imitar a un humano (es decir, macros de teclado y mouse).

Soy consciente de AutoHotKey pero no creo que haga lo que quiero. (O podría hacer lo que yo quiera, pero su lenguaje de scripting es horrible).

Los requisitos son:

  • Debe permitir retrasos de tiempo entre acciones, o detección de eventos para desencadenar acciones.

    Las simulaciones pueden tardar hasta diez minutos en ejecutarse, por lo que el controlador de la GUI tendría que esperar hasta que la simulación termine antes de comenzar una nueva.

    Una forma de hacerlo sería esperar diez minutos y esperar que la simulación haya terminado. Una forma alternativa es hacer que sea controlado por eventos, es decir, ver que el cuadro de diálogo "Simulación en ejecución ..." desaparezca y sea reemplazado por un cuadro de diálogo "Simulación completa".

  • Debe permitir la composición de entrada de teclado complejo.

    Algunas de las entradas de teclado requeridas son diferentes para cada ejecución de simulación. Por ejemplo, la descripción de la simulación podría tener el formato [Project name][Scenario name][Option 1][Option 2]... y esto debería ingresarse para cada simulación.

    Soy consciente de que AutoHotKey permite un nivel básico de personalización de entrada, pero mi lectura casual de la documentación hace que el lenguaje de secuencias de comandos parezca una especie de horror a la deriva.

  • Esto es para el trabajo, por lo que cualquier solución debe ser gratuita para uso comercial.

Aceptaré cualquier solución que se ajuste al criterio anterior, pero tengo una fuerte preferencia por algo que pueda manejar desde Python. Sin embargo, también aceptaría herramientas automatizadas de prueba de GUI que podría personalizar para hacer lo que quiero, ¿posiblemente un equivalente de Win32 GUI de Selenium para navegadores? - grabadoras de macros de teclado que generarán una salida personalizada, o cualquier otra cosa que funcione.



Echa un vistazo a Automa , está escrito en Python. Puede usarse como una herramienta independiente o como una biblioteca de Python en sus propios scripts:

from automa.api import *

Permite la automatización de cualquier aplicación de Windows a través de comandos como hacer clic, presionar, escribir, etc.

Algunos ejemplos de los scripts de automatización se pueden encontrar en http://www.getautoma.com/blog/category/ui-automation-examples

Descargo de responsabilidad : soy uno de los desarrolladores de Automa.


Mira este https://pywinauto.github.io/

Puedes usar el script de Python para controlar tu aplicación de Windows.

La ventaja es:

  • no hay necesidad de aprender un nuevo idioma / sintaxis
  • Se integra fácilmente con otro script existente.

Puede usar la biblioteca PyAutoGUI para Python que funciona en Windows, macOS y Linux.

Debe permitir demoras de tiempo entre acciones.

Ejemplo para escribir con una pausa de un cuarto de segundo entre cada tecla:

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

Este es el ejemplo para configurar una pausa de 2.5 segundos después de cada llamada de PyAutoGUI:

pyautogui.PAUSE = 2.5

Debe permitir la composición de entrada de teclado complejo.

pyautogui.typewrite funciones de control del teclado donde puede usar pyautogui.typewrite para escribir algo. Puede pasar variables para permitir una entrada de teclado complejo.

Detección de eventos para desencadenar acciones.

Puede usar las funciones de localización para buscar visualmente algo en la pantalla y hacer que la condición se base en un simple bucle.

La solución debe ser gratuita para uso comercial.

Está licenciado bajo el BSD que permite el uso comercial.

Ver también:


RIATest no usa Python, pero por lo demás cumple con los RIATest . Es como Selenium pero para Win32 y web.

RIATest utiliza la API de Windows UI Automation y puede manejar cualquier aplicación de Windows que exponga su GUI a UI Automation correctamente (que incluye todas las aplicaciones nativas y .NET).

Descargo de responsabilidad: trabajo para Cogitek, la empresa RIATest.