Haz que tu progtwig use una gui

Me gustaría escribir un progtwig capaz de “usar” otros progtwigs tomando el control del mouse / teclado y poder “ver” lo que está en la pantalla.

Utilicé AutoIt para hacer algo similar, pero tuve que hacer trampa a veces porque el lenguaje no es tan poderoso, o tal vez es solo que apesto y no puedo hacer mucho con eso: P

Entonces … necesito

  • Tomar capturas de pantalla, luego las compararé para que el progtwig “entienda”, pero debe “ver”
  • Usa el ratón: mover, hacer clic y soltar, es simple, ¿no es así?
  • Uso del teclado: presionando algunas teclas, o combinaciones de teclas, incluyendo teclas especiales como Alt , Ctrl , etc.

¿Cómo puedo hacer eso en python?
¿Funciona tanto en linux como en windows? (Esto podría ser realmente genial, pero no es necesario)

He tenido un poco de suerte con tareas similares usando PyWinAuto .

pywinauto es un conjunto de módulos de python para automatizar la GUI de Microsoft Windows. En su forma más simple, le permite enviar acciones con el mouse y el teclado a los cuadros de diálogo y controles de Windows.

También tiene algo de soporte para capturar imágenes de diálogos y, por ejemplo, el uso de Python Imaging Library PIL .

Puedes usar WATSUP bajo Windows.

AutoIt es completamente capaz de hacer todo lo que mencionas. Cuando quiero hacer algo de automatización pero usar las características de Python, me resulta más fácil usar AutoItX, que es un control DLL / COM.

Tomado de esta respuesta mía:

import win32com.client oAutoItX = win32com.client.Dispatch( "AutoItX3.Control" ) oAutoItX.Opt("WinTitleMatchMode", 2) #Match text anywhere in a window title width = oAutoItX.WinGetClientSizeWidth("Firefox") height = oAutoItX.WinGetClientSizeHeight("Firefox") print width, height 

Si se siente cómodo con Pascal, un progtwig de lectura de teclado / mouse / pantalla realmente poderoso es SCAR: http://freddy1990.com/index.php?page=product&name=scar Puede hacer OCR, búsqueda de bitmap, búsqueda de color, etc. A menudo se usa para automatizar juegos en línea, pero se puede usar para cualquier situación en la que desee simular a un humano leyendo la pantalla y dando información.

He usado la API de entrada de Windows (solo) para escribir una aplicación de control remoto similar a VNC en el pasado. Le permite falsificar la entrada del teclado y el mouse a nivel del sistema (es decir, no solo publicar eventos en una sola aplicación).

Si está intentando realizar cualquier tipo de prueba automatizada de sistemas completos a nivel de GUI, este excelente documento de USENIX que describe las pruebas de capacidad de respuesta automáticas es una lectura obligatoria.