2 usuarios conectados

Automatización y scripting. Tareas con la GUI

Comparte esto

Ahora vamos a explorar cómo Python puede automatizar tareas que involucran la interfaz gráfica de usuario (GUI) de tu sistema operativo o de aplicaciones específicas. Automatizar interacciones con la GUI puede ser útil para tareas repetitivas, pruebas de software, o para interactuar con aplicaciones que no tienen una API programable.

Python ofrece varias librerías para la automatización de la GUI, siendo las más populares:

1. pyautogui:

pyautogui es un módulo multiplataforma de Python que te permite controlar el ratón y el teclado para automatizar interacciones con la GUI. Puede mover el ratón, hacer clic, escribir texto, presionar teclas, tomar capturas de pantalla y buscar imágenes en la pantalla.

Características Clave de pyautogui:

Ejemplo Básico con pyautogui:

Python
 
import pyautogui
import time

# Obtener el tamaño de la pantalla
screen_width, screen_height = pyautogui.size()
print(f"Tamaño de la pantalla: {screen_width} x {screen_height}")

# Mover el ratón a una posición
pyautogui.moveTo(100, 100, duration=1)  # Mover a (100, 100) en 1 segundo

# Hacer clic izquierdo
pyautogui.click()

# Hacer doble clic
pyautogui.doubleClick()

# Escribir texto
pyautogui.typewrite("Hola, mundo!")
time.sleep(1)

# Presionar la tecla Enter
pyautogui.press('enter')
time.sleep(1)

# Presionar una combinación de teclas (Ctrl+A para seleccionar todo)
pyautogui.hotkey('ctrl', 'a')
time.sleep(1)

# Tomar una captura de pantalla y guardarla
screenshot = pyautogui.screenshot()
screenshot.save("captura_de_pantalla.png")
print("Captura de pantalla guardada como 'captura_de_pantalla.png'")

# Buscar una imagen en la pantalla
try:
    ubicacion_imagen = pyautogui.locateOnScreen('boton_ejemplo.png') # Reemplaza con la ruta a tu imagen
    if ubicacion_imagen:
        centro_x, centro_y = pyautogui.center(ubicacion_imagen)
        print(f"Imagen encontrada en: {ubicacion_imagen}, centro en: ({centro_x}, {centro_y})")
        pyautogui.click(centro_x, centro_y) # Hacer clic en el centro de la imagen
    else:
        print("Imagen no encontrada en la pantalla.")
except FileNotFoundError:
    print("El archivo de imagen 'boton_ejemplo.png' no fue encontrado.")

# Mostrar un cuadro de mensaje
pyautogui.alert("Tarea completada!")

Consideraciones al usar pyautogui:

2. pynput:

pynput es otra librería que permite controlar y monitorizar dispositivos de entrada (teclado y ratón). A diferencia de pyautogui, pynput proporciona un control de nivel inferior y también puede escuchar eventos de teclado y ratón.

Características Clave de pynput:

Ejemplo Básico con pynput (Control del Ratón):

Python
 
from pynput.mouse import Controller, Button
import time

# Crear un objeto controlador del ratón
mouse = Controller()

# Obtener la posición actual del ratón
print(f"Posición actual del ratón: {mouse.position}")

# Mover el ratón a una posición
mouse.position = (100, 200)
time.sleep(1)

# Hacer clic izquierdo
mouse.click(Button.left, 1) # El segundo argumento es el número de clics
time.sleep(1)

# Hacer doble clic derecho
mouse.click(Button.right, 2)
time.sleep(1)

# Desplazar la rueda del ratón
mouse.scroll(0, 2) # Desplazar hacia abajo (eje x, eje y)
time.sleep(1)
mouse.scroll(0, -2) # Desplazar hacia arriba

Ejemplo Básico con pynput (Control del Teclado):

Python
 
from pynput.keyboard import Controller, Key
import time

# Crear un objeto controlador del teclado
keyboard = Controller()

# Escribir una cadena de texto
keyboard.type("Hola desde pynput!")
time.sleep(1)

# Presionar y soltar teclas especiales
keyboard.press(Key.enter)
keyboard.release(Key.enter)
time.sleep(1)

# Presionar una combinación de teclas (Shift+A)
with keyboard.pressed(Key.shift):
    keyboard.press('a')
    keyboard.release('a')
time.sleep(1)

# Simular la pulsación de la tecla de flecha arriba
keyboard.press(Key.up)
keyboard.release(Key.up)

Otras Librerías (Menos Comunes para Automatización General):

Cuándo Usar pyautogui vs. pynput:

La automatización de tareas con la GUI puede ser una forma poderosa de simplificar flujos de trabajo repetitivos, pero requiere una comprensión cuidadosa de la interfaz de la aplicación objetivo y puede necesitar ajustes si la interfaz cambia.