====== Python: Automatización GUI ====== Se llama automatización GUI al control del ratón y teclado. Se usa el módulo externo **PyAutoGUI** que podemos instalar con pip: ''pip install pyautogui'' * [[https://pyautogui.readthedocs.io/en/latest/|PyAutoGUI]] ===== Tamaño de pantalla ===== import pyautogui pyautogui.size() # Resultado # Size(width=1920, height=1080) Para obtener la posición actual del ratón: import pyautogui pyautogui.position() ===== Control del ratón ===== ==== Mover ==== pyautogui.moveTo(10, 10) Podemos definir cuánto tiempo le llevará moverse a la posición indicada: pyautogui.moveTo(10, 10, duration=1.5) La opción ''duration'' acepta segundos. Si queremos hacer un movimiento de forma relativa, es decir, movernos tomando como punto inicial la posición actual del ratón y no la esquina superior izquierda de la pantalla, utilizamos el método ''moveRel()'': pyautogui.moveRel(20, 0) Con el código anterior, el ratón se movería 20 píxeles a la derecha de la posición actual ==== Clic ==== Un clic: pyautogui.click(300, 10) Doble clic: pyautogui.doubleClick(300, 10) Clic con el botón central: pyautogui.middleClick(300, 10) ==== Arrastrar ==== pyautogui.dragTo(100, 0, duration=0.1) Si queremos un movimiento relativo, el método a usar es ''dragRel()'' Ejemplo dibujando una espiral cuadrada en Paint: import pyautogui # Hacemos foto con el programa de dibujo pyautogui.click() distancia = 200 while distancia > 0: pyautogui.dragRel(distancia, 0, duration=0.1) # Mover a la derecha distancia = distancia - 25 pyautogui.dragRel(distancia, 0, duration=0.1) # Mover abajo distancia = distancia- 25 pyautogui.dragRel(distancia, 0, duration=0.1) # Mover a la izquierda distancia = distancia- 25 pyautogui.dragRel(distancia, 0, duration=0.1) # Mover arriba Si alguna vez se pierde el control al estar en ejecución algún método de PyAutoGUI, el módulo tiene una secuencia de parada cuando detecta que el ratón se mueve a las coordenadas (0,0), así que si queremos finalizar un programa de PyAutoGUI, llevamos rápidamente el ratón a la esquina superior izquierda de la pantalla ===== Obtener coordenadas del ratón ===== El módulo PyAutoGUI incluye un método para ver en directo las coordenas del puntero del ratón: import pyautogui pyautogui.displayMousePosition() El método ''displayMousePosition()'' está pensado para ejecutarse desde una sesión interactiva en el intérprete Ejemplo de salida: >>> pyautogui.displayMousePosition() Press Ctrl-C to quit. X: 323 Y: 651 RGB: ( 12, 12, 12) ===== Control de teclado ===== ==== Escritura ==== import pyautogui pyautogui.typewrite("Hola, mundo") Si queremos hacer una pausa entre cada caracter, para imitar a un humano, podemos añadir el argumento ''interval'': import pyautogui pyautogui.typewrite("Hola, mundo", interval=0.2) ==== Teclas ==== import pyautogui pyautogui.typewrite(['a', 'b', 'left', 'left']) Podemos encontrar un listado de las teclas a usar en esa lista mediante: pyautogui.KEYBOARD_KEYS Si solo vamos a pulsar una tecla, podemos usar el método ''press()'': pyautogui.press('f1') Para una combinación de teclas, método ''hotkey()'': pyautogui.hotkey('ctrl', 'alt', 't') ===== Capturar pantalla ===== En Windows no hay que hacer nada, pero en Linux necesitamos instalar el paquete ''scrot'' pyautogui.screenshot("/home/usuario/captura.png") ==== Buscar imagen en pantalla ==== Si tenemos una imagen que queremos comprobar si existe en el escritorio: pyautogui.locateOnScreen("/home/usuario/imagen-a-buscar.png") # Resultado (si la encuentra) # (907, 316, 50, 41) # x, y, anchura, altura del elemento Si queremos que la busque y nos devuelva el centro de esa imagen (por si luego queremos usar el ratón): pyautogui.locateCenterOnScreen("/home/usuario/imagen-a-buscar.png") # Resultado: # (932, 326) pyautogui.moveTo((932, 326)) pyautogui.click()