Automatización de la GUI usando Pyautogui, Python

Automatización de la GUI usando Pyautogui, Python
Pyautogui es un módulo de automatización proporcionado por Python para controlar las funciones del teclado y el mouse a través del programa. Este módulo tiene casi todas las funciones que se pueden realizar por teclado y mouse. Podemos usar estas funciones para automatizar las acciones del mouse y el teclado.

Instalación de Pyautogui

Antes de usar funciones de Pyautogui módulo, tenemos que instalarlo. Para instalar este módulo, ejecute el siguiente comando en la terminal.

$ Pip Instalar Pyautogui

O

$ PIP3 Instalar pyautogui

Ahora Pyautogui está listo para usar.

Obtener resolución de la pantalla

Antes de automatizar las acciones del mouse, es una buena práctica conocer la resolución de la pantalla. Podemos obtener la resolución de la pantalla usando .tamaño() método de

Pyautogui. Vea a continuación la resolución de la pantalla en forma de 'ancho x altura':

Python 2.7.15+ (predeterminado, 7 de octubre de 2019, 17:39:04)
[GCC 7.4.0] en Linux2

Escriba "ayuda", "copyright", "créditos" o "licencia" para obtener más información.

>>> importar pyautogui
>>> ancho, altura = pyautogui.tamaño()
>>> Imprimir (ancho)
1366
>>> imprimir (altura)
768

Significa que tenemos 1366 píxeles en dirección horizontal de pantalla y 768 píxeles en dirección vertical de pantalla.

Mover el mouse en exhibición

Entonces conocemos la resolución de nuestra pantalla. Ahora podemos mover el mouse en cualquier lugar de la pantalla dentro de los límites de resolución de la pantalla. Podemos mover el mouse usando .mover a() Método de Pyautogui. Ejemplo a continuación de mover el mouse a la posición (100,100) en 2 segundos

>>> importar pyautogui
>>> Pyautogui.Moveto (100,100, duración = 2)

Hemos pasado tres argumentos a .Método Moveto (). Los primeros dos argumentos son obligatorios y muestran la posición de destino, pero el tercer argumento no es obligatorio. Si no pasamos el tercer argumento, entonces el mouse se mueve al destino en poco tiempo.

Hacer clic, desplazar y arrastrar el mouse

Pyautogui proporciona algunos métodos para controlar las acciones del mouse. Podemos hacer clic, desplazar y arrastrar mouse utilizando diferentes métodos.

Al hacer clic en la acción del mouse se puede realizar utilizando .hacer clic () Método. Antes de hacer clic, mueva el mouse al píxel requerido y luego use .hacer clic () Método para hacer clic. El siguiente es el ejemplo para realizar la acción de hacer clic del mouse. El ejemplo a continuación moverá el mouse a (300,201) píxel y haga clic en el mouse.

>>> importar pyautogui
>>> Pyautogui.Moveto (300,201)
>>> Pyautogui.hacer clic()

Puede hacer doble clic en el mouse usando .haga doble clic() método.

>>> Pyautogui.Moveto (300,201)
>>> Pyautogui.haga doble clic()

Pyautogui proporciona un método .Desplazarse() para desplazar el mouse hacia arriba o hacia abajo. Este método toma un entero como argumento, luego se desplaza hacia arriba o hacia abajo dependiendo del entero. Si pasa un entero positivo, se desplazará hacia arriba y por un entero negativo se desplazará hacia abajo. Cuanto se desplazará? Depende del valor de entero.

>>> importar pyautogui
>>> Pyautogui.desplazarse (20)
>>> Pyautogui.desplazarse (-20)

En el ejemplo anterior, primero el mouse se desplazará por 20 unidades y luego se desplazará hacia abajo de 20 unidades.

Arrastrar la operación del mouse también se puede aplicar utilizando .arrastre a() Método del módulo Pyautogui. Arrastrar medios, mover el mouse mientras presiona uno de los botones del mouse. Este método toma tres argumentos, los dos primeros argumentos para mostrar las coordenadas de destino y el último argumento es el tiempo de duración que significa cuánto tiempo llevará pasar al destino.

Para ver la operación de arrastre, abra la pintura, maximice la ventana, elija el lápiz y ejecute los siguientes comandos en la carcasa interactiva. El código moverá el mouse a (138,229) píxel en 2 segundos, y luego arrastrar el mouse del píxel actual al píxel requerido también en 2 segundos.

>>> importar pyautogui
>>> Pyautogui.Moveto (138, 229, duración = 2)
>>> Pyautogui.Dragto (238, 229, duración = 2)
>>> Pyautogui.Dragto (238, 329, duración = 2)
>>> Pyautogui.Dragto (138, 329, duración = 2)
>>> Pyautogui.Dragto (138, 229, duración = 2)

El código anterior hará un programa cuadrado sobre pintura arrastrando el mouse.

Cómo encontrar las coordenadas de un directorio o icono de archivo

Para encontrar las coordenadas de un archivo o un directorio, .posición() se utiliza el método. Este método devuelve las coordenadas en las que el mouse está actualmente presente. Siga los pasos dados para encontrar coordenadas

  1. Abra la consola de Python
  2. Tipo de posición ()
  3. Antes de presionar la tecla 'Enter', mueva la flecha del mouse al icono, donde desea encontrar coordenadas
  4. Luego presione Entrar para ejecutar el comando

Manejo de pausa y fallas seguros

Está escribiendo un script para automatizar las acciones de su mouse y necesita una breve pausa entre cada comando. ¿Cómo lo administrarás?? Usarás .dormir() método de TIEMPO módulo después de cada comando? Pero aumentará la longitud de su código. Esto se puede hacer mediante la configuración pyautogui.PAUSA variable al número de segundos que desea una pausa. Esto creará una pausa después de cada comando. El ejemplo a continuación detiene 3 segundos entre cada comando.

>>> importar pyautogui
>>> Pyautogui.Pausa = 3
>>> Pyautogui.Moveto (100,100)
>>> Pyautogui.Moveto (200,200)

Python también tiene un A PRUEBA DE FALLOS característica. Para habilitar esta función, configuramos pyautogui.Fallas a la verdad. Cómo funciona esto? Por ejemplo, su pantalla tiene una resolución de 1366 x 768. Si mueve el mouse a (1500,1500), el programa se bloqueará mediante la recaudación de FakeSafeException. Puede manejar esta excepción utilizando la declaración de prueba y excepto o deshabilitando Pyautogui.A PRUEBA DE FALLOS. Al deshabilitar la función FakeSafe, el programa no planteará esta excepción.

>>> importar pyautogui
>>> Pyautogui.FaileSafe = falso
>>> Pyautogui.tamaño()
Tamaño (ancho = 1366, altura = 768)
>>> Pyautogui.Moveto (1500,1500)
>>> Pyautogui.Moveto (100,100)

En el ejemplo anterior, movimos el mouse en píxeles (1500,1500) pero la pantalla tiene (1366,768) píxeles. El programa ignoró esta excepción.

Enviar una cadena desde el teclado

Pyautogui proporciona una característica para pasar una cadena desde el teclado. Esto se puede hacer usando .Método de máquina de escribir () de este módulo. Antes de pasar una cadena desde el teclado, concéntrese en la ventana donde va a pasar la cadena. Para centrarnos en la ventana requerida, podemos usar .hacer clic () Método.

Utilizamos un punto y comandos entre los dos comandos, ya que se centra en el editor de texto y pasamos la cadena uno detrás del otro. Ahora la pregunta es cómo podemos pasar las teclas 'alt' o 'cambiar'. Estas teclas pueden representarse mediante valores de cadena cortos. Algunos valores de cadena se dan a continuación.

Valores de cadena de teclas
Llaves alternativas de izquierda y derecha 'Altleft', 'Altright'
Claves de cambio de izquierda y derecha 'Shiftleft', 'Shiftright'
Llaves de control izquierdo y derecho 'Ctrlleft', 'Ctrlright'
Page arriba y paga las teclas 'PageUp', 'Paggown'
Backspace y eliminar las teclas 'Backspace', 'Eliminar'
Arriba, hacia abajo, las teclas de flecha izquierda y derecha 'hacia arriba', 'hacia abajo', 'izquierda', 'derecha'
Llave de bloqueo de tapas 'Capslock'
Ingrese la tecla 'Enter'
ESC KEY 'ESC'
Tabla de pestaña 'pestaña'
Home y finales de las llaves 'Home', 'End'
F1 a F12 teclas 'F1', 'F2', .. . , 'F12'
Num Bloqule Key 'Numlock'
Clave PRTSC 'PrintScreen'
Insertar la tecla 'insertar'

Para pasar una de las claves anteriores, usamos estos valores de cadena en forma de lista. El siguiente ejemplo aclarará esto. El código está pasando 'Capslock' dos veces. Primera vez en forma de lista y segunda vez Simple String. Pasar 'Capslock' en la lista presiona la tecla 'Bloqueo de Caps'. Y el segundo 'Capslock' simplemente escriba 'Capslock' en capital, ya que primero se presiona la tecla 'Capslock'.

>>> importar pyautogui
>>> Pyautogui.máquina de escribir (['Capslock']); Pyautogui.máquina de escribir ('Capslock')
Capslock >>> Capslock

Presionando atajos

Un atajo es la combinación de claves para realizar algunas tareas. Por ejemplo, se utiliza el acceso directo 'Alt+F4' para cerrar la ventana actual. Una combinación de teclas también se puede pasar del teclado utilizando el módulo Pyautogui. Para presionar 'Alt+F4', primero presionamos y presionamos la tecla 'Alt' y luego presione la tecla 'F4'. Después de lanzar la tecla 'F4', lanzamos la tecla 'Alt'. Aquí usaremos .tecla Arriba() y .keydown () Métodos para presionar una combinación de teclas. El siguiente ejemplo muestra presionar y contener la tecla 'Alt' y presionar y mantener la tecla 'F4' junta.

importar pyautogui
tiempo de importación
pyautogui.Keydown ('Alt')
pyautogui.Keydown (<'f4')
tiempo.dormir(.5)
pyautogui.KeyUp ('F4')
pyautogui.KeyUp ('Alt')

NOTA: En el ejemplo anterior no usamos la lista de valor de cadena de la tecla 'Alt' y 'F4'. La lista de valor de cadena solo se pasa a .escribir a máquina() método.

Es muy complicado de presionar y presionar la tecla 'Alt' y luego presione la tecla 'F4' y después de liberar la tecla 'F4' y luego liberar la tecla 'Alt'. Esto se puede hacer simplemente usando .Hotkey () método. El siguiente ejemplo borrará el concepto.

importar pyautogui
tiempo de importación
pyautogui.Hotkey ('Alt', 'F4')

Tomar y analizar la captura de pantalla

También podemos tomar una captura de pantalla con Python. Ofertas de módulo Pyautogui .captura de pantalla() Método para tomar la captura de pantalla de la pantalla actual. La captura de pantalla se puede mostrar utilizando .espectáculo() método. Ejecute el siguiente comando para tomar una captura de pantalla y mostrarla.

>>> importar pyautogui
>>> img = pyautogui.captura de pantalla()
>>> img.espectáculo()

Cuando ejecute los comandos anteriores para tomar una captura de pantalla, se guardará en la variable 'IMG'. Ahora podemos llamar a más métodos sobre la variable 'IMG'.

Podemos obtener una tupla de los valores RGB de nuestro píxel requerido usando .getPixel () Método en la variable 'IMG'. Argumento pasado a .El método getPixel () es una tupla que contiene las coordenadas X e Y de la captura de pantalla. Ejecute el siguiente comando en el shell interactivo.

>>> img.getPixel ((2,3))
(85, 82, 74)

Además, podemos obtener el tamaño de la imagen usando el siguiente comando

>>> img.tamaño
(1366, 768)

Podemos verificar si los píxeles dados de la pantalla coinciden con el valor RGB dado o no. Esto se puede hacer usando .PixelMatchScolor () método. Se pasan un total de tres argumentos a este método. Los primeros dos argumentos son las coordenadas X e Y de la pantalla y el tercer argumento es una tupla de valores RGB. Este método devuelve 'verdadero' si el color coincide con píxel de lo contrario 'falso'. Este método se puede usar de la siguiente manera

>>> Pyautogui.PixelMatchescolor (2,3, (85,82,74))
Verdadero
>>> Pyautogui.PixelMatchescolor (3,5, (52,85,74))
FALSO

Hemos visto algunos conceptos básicos, y ahora en las siguientes secciones veremos algunos casos de uso de automatización de la GUI usando el módulo Pyautogui.

Abrir automáticamente diferentes archivos para usted

Todos los días en su oficina, debe abrir muchos archivos para ingresar algunos datos de los empleados manualmente. Es un poco aburrido hacer. Primero vaya al directorio de documentos, luego vaya a otro directorio y abra un archivo, luego regrese al directorio de documentos y gotee otro directorio y haga lo mismo, etc.

Esto se puede hacer simplemente escribiendo un guión de Python. Lo que tiene que hacer es ejecutar solo el script y el script abrirá todos los archivos.

Para realizar esta tarea, en primer lugar, debe localizar las coordenadas de los seguidores

  1. Icono de cada directorio
  2. Icono de cada archivo
  3. Minimizar el botón de los archivos

Cómo encontrar las coordenadas se ha explicado anteriormente.

# Importar módulo Pyautogui
importar pyautogui
# Generar una pausa de 1.5 segundos después de cada comando
pyautogui.Pausa = 1.5
# Mover el mouse al icono 'esta PC' en la barra de tareas
pyautogui.Moveto (346,752)
# haciendo clic en el icono 'esta PC'
pyautogui.hacer clic()
# Mover el mouse al icono del directorio 'Documentos'
pyautogui.Moveto (95,184)
# Haga clic en el directorio 'Documentos'
pyautogui.hacer clic()
# Mover el mouse al directorio dentro del directorio de 'documentos'
pyautogui.Moveto (249,107)
# hacer doble clic para abrir el directorio
pyautogui.haga doble clic()
# Mover el mouse en el archivo para abrir
pyautogui.Moveto (249,108)
# hacer doble clic en el archivo para abrir
pyautogui.haga doble clic()
# Mover el mouse en el botón Minimizar
pyautogui.Moveto (1310,47)
# hacer clic para minimizar el archivo
pyautogui.hacer clic()

En el código anterior, solo abrimos un archivo. Del mismo modo, puede extender el código para abrir varios archivos.

Parece ocupado en el sistema

Está en su trabajo y no está trabajando en el sistema, pero su sistema tiene una aplicación instalada que puede adivinar si está sentado inactivo o trabajando en el sistema utilizando el movimiento del mouse. Por lo tanto, desea automatizar el mouse para moverse después de cada intervalo de tiempo corto.

Esto se puede hacer escribiendo un pequeño script de Python usando Pyautogui módulo.

importar pyautogui
# generar una pausa de 5 segundos entre el movimiento del ratón
pyautogui.Pausa = 5
intentar:
# Running Infinite Loop
Mientras que es cierto:
# Movimiento del mouse a (200,300) coordenadas en 1 segundo
pyautogui.Moveto (200,300, duración = 1)
# Mover mouse a (201,310) coordinar en 1 segundo
pyautogui.Moveto (201,310, duración = 1)
Excepto que el teclado segrine:
imprimir ('dejar de fumar')

En el código anterior estamos moviendo el mouse de una ubicación a otra ubicación durante cada 5 segundos. Podemos dejar este código presionando 'Ctrl+C'.

Conclusión

En este blog discutimos cómo puede usar el módulo pyautogui para automatizar la GUI del sistema. Se han explicado diferentes funciones de este módulo y puede automatizar casi todo lo que se puede hacer usando teclado y mouse utilizando estas funciones.