Introducción
Contenido
En este tutorial aprenderemos a usarlo. pyautogui biblioteca en Python 3. Una PyAutoGUI
La biblioteca proporciona soporte multiplataforma para administrar las operaciones del mouse y el teclado a través del código para permitir la automatización de tareas. El es pyautogui
hay una biblioteca disponible para Python 2; sin embargo, usaremos Python 3 durante este tutorial.
Una herramienta como esta tiene muchas aplicaciones, algunas de las cuales incluyen la creación de capturas de pantalla, la automatización de pruebas de GUI (como el selenio), la automatización de tareas que solo se pueden realizar con una GUI, etc.
Antes de continuar con este tutorial, tenga en cuenta que existen algunos requisitos previos. Debe tener un conocimiento básico de la sintaxis de Python y / o haber realizado al menos programación de nivel principiante en algún otro idioma. De lo contrario, el tutorial es bastante simple y fácil de seguir para principiantes.
Instalación
El proceso de instalación de PyAutoGUI
lo suficientemente simple para todos los sistemas operativos. Sin embargo, hay algunas dependencias en Mac y Linux que deben instalarse antes PyAutoGUI
una biblioteca se puede instalar y utilizar en programas.
Windows
Para Windows, PyAutoGUI
no tiene dependencias. Simplemente ejecute el siguiente comando en su símbolo del sistema y la instalación estará lista.
$ pip install PyAutoGUI
Mac
Tu hijo, pyobjc-core
y pyobjc
los módulos deben instalarse en orden primero. A continuación se muestran los comandos que debe ejecutar en orden en su terminal para instalarlos correctamente:
$ pip3 install pyobjc-core
$ pip3 install pyobjc
$ pip3 install pyautogui
Linux
Para Linux, es la única dependencia python3-xlib
(para Python 3). Para instalar eso, y más allá pyautogui
, ejecute los dos comandos mencionados a continuación en su terminal:
$ pip3 install python3-xlib
$ pip3 install pyautogui
Ejemplos del código básico
En esta sección, cubriremos algunas de las funciones más utilizadas de PyAutoGUI
biblioteca.
Funciones genéricas
La función position ()
Antes de que pudiéramos usarlo PyAutoGUI
funciones, necesitamos importarlo a nuestro programa:
import pyautogui as pag
SEO position()
esta función nos dice el estado actual del mouse en nuestra pantalla:
pag.position()
Salida:
Point (x = 643, y = 329)
Función de pantalla ()
El es onScreen()
la función nos dice si el punto con coordenadas xey está en la pantalla:
print(pag.onScreen(500, 600))
print(pag.onScreen(0, 10000))
Salida:
True
False
Aquí podemos ver que el primer punto está en la pantalla, pero el segundo punto cae sobre las dimensiones de la pantalla.
Función Amount ()
El es size()
obtiene una función de alto y ancho de pantalla (resolución).
pag.size()
Salida:
Size (width = 1440, height = 900)
Su salida puede ser diferente y dependerá del tamaño de su pantalla.
Operaciones comunes del mouse
En esta sección, vamos a cubrir PyAutoGUI
funciones de manipulación del mouse, que incluyen mover la posición del cursor y hacer clic automáticamente en los botones a través del código.
La función moveTo ()
Proporción de la moveTo()
La función es la siguiente:
pag.moveTo(x_coordinate, y_coordinate)
Valor x_coordinate
aumenta de izquierda a derecha de la pantalla y el valor y_coordinate
aumenta de arriba a abajo. El valor de ambos x_coordinate
y y_coordinate
en 0 en la esquina superior izquierda de la pantalla.
Vea el siguiente script:
pag.moveTo(0, 0)
pag.PAUSE = 2
pag.moveTo(100, 500) #
pag.PAUSE = 2
pag.moveTo(500, 500)
En el código anterior, el enfoque principal es moveTo()
una función que mueve el cursor del mouse en la pantalla en función de las coordenadas que proporcionamos como parámetros. La coordenada x es el primer parámetro y la coordenada y es el segundo parámetro. Es importante señalar que estas coordenadas representan la posición completa del cursor.
Otra cosa introducida en el código anterior es la PAUSE
propiedad; básicamente detiene la ejecución del script durante un cierto período de tiempo. El es PAUSE
se ha agregado la propiedad en el código anterior para que pueda ver la ejecución de la función; de lo contrario, las funciones se ejecutarían en décimas de segundo y no podría ver el cursor moviéndose de un lugar a otro en la pantalla.
Otra cosa que funcionaría en esto es mostrarles a todos el tiempo moveTo()
operar como el tercer parámetro en la función, p. ej. moveTo(x, y, time_in_seconds)
.
La ejecución del script anterior puede producir el siguiente error:
Nota: posible error
Traceback (most recent call last):
File "a.py", line 5, in <module>
pag.moveTo (100, 500)
File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 811, in moveTo
_failSafeCheck()
File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 1241, in _failSafeCheck
raise FailSafeException ('PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.')
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.
Si la ejecución se realiza moveTo()
Una función genera un error similar al que se muestra arriba, lo que significa que su computadora está habilitada a prueba de fallas. Para deshabilitar la protección contra fallas, agregue la siguiente línea al principio de su código:
pag.FAILSAFE = False
Esta función está habilitada de forma predeterminada para que pueda detener su ejecución pyautogui
programa moviendo manualmente el mouse a la esquina superior izquierda de la pantalla. Cuando el mouse está en este lugar, pyautogui
debe excepción y salida.
La función moveRel ()
Coordenadas del moveTo()
función completa. Sin embargo, si desea mover la posición del mouse en relación con la posición actual del mouse, puede moveRel()
función.
Lo que esto significa es que el punto de referencia para esta función, al mover el cursor, no es el punto superior izquierdo de la pantalla (0, 0), sino la posición actual del cursor del mouse. Entonces, si el cursor de su mouse se encuentra actualmente en un punto (100, 100) en la pantalla y llama al moveRel()
función con los parámetros (100, 100, 2)
será la nueva posición de su cursor de movimiento (200, 200).
Usted puede moveRel()
funcionar como se muestra a continuación:
pag.moveRel(100, 100, 2)
La secuencia de comandos anterior moverá el cursor 100 puntos a la derecha y 100 puntos hacia abajo en 2 segundos, en relación con la posición actual del cursor.
La función de clic ()
El es click()
una función se utiliza para simular operaciones de clic del mouse. Proporción de la click()
La función es la siguiente:
pag.click(x, y, clicks, interval, button)
Los parámetros se explican a continuación:
x
: coordenada x del punto a alcanzary
: coordenada y del punto a alcanzarclicks
: la cantidad de clics que desea hacer cuando el cursor llega a ese punto en la pantallainterval
: la cantidad de tiempo en segundos entre cada clic del mouse, es decir, si está haciendo varios clics del mousebutton
: especifique qué botón del mouse desea presionar cuando el cursor llegue a ese punto en la pantalla. Los valores son potencialesright
,left
ymiddle
.
Aquí hay un ejemplo:
pag.click(100, 100, 5, 2, 'right')
También puede ejecutar funciones de clic específicas de la siguiente manera:
pag.rightClick(x, y)
pag.doubleClick(x, y)
pag.tripleClick(x, y)
pag.middleClick(x, y)
Aquí está el x
y y
para representar el x
y y
coordenadas, al igual que en las funciones anteriores.
Puede tener un control más preciso con el clic de un mouse especificando cuándo se puede presionar el mouse hacia abajo y cuándo se soltará. Esto se hace usando el mouseDown
y mouseUp
funciones, respectivamente.
He aquí un breve ejemplo:
pag.mouseDown(x=x, y=y, button='left')
pag.mouseUp(x=x, y=y, button='left')
El código anterior es exactamente un pag.click(x, y)
llamada.
Función de barra de desplazamiento ()
La última función del mouse que estamos cubriendo scroll
. Como era de esperar, tiene dos opciones: desplazarse hacia arriba y hacia abajo. Proporción de la scroll()
La función es la siguiente:
pag.scroll(amount_to_scroll, x=x_movement, y=y_movement)
Para desplazarse hacia arriba, ingrese un valor positivo para amount_to_scroll
parámetro y, para desplazarse hacia abajo, especifique un valor negativo. Aquí hay un ejemplo:
pag.scroll(100, 120, 120)
De acuerdo, esto fue para las funciones del mouse. En este momento, debería poder controlar los botones del mouse y los movimientos por código. Pasemos ahora a las funciones del teclado. Hay muchos, pero solo cubriremos los más utilizados.
Operaciones comunes del teclado
Antes de pasar a las funciones, es importante saber qué teclas se pueden presionar a través de un código. pyautogui
, así como su convención de nomenclatura exacta. Para hacerlo, ejecute el siguiente script:
print(pag.KEYBOARD_KEYS)
Salida:
['t', 'n', 'r', ' ', '!', '"', "https://Pharos.sh.com/getting-started-with-python-pyautogui/#", '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', "https://Pharos.sh.com/", '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command', 'option', 'optionleft', 'optionright']
Función de máquina de escribir ()
El es typewrite()
una función se utiliza para escribir un objeto en un campo de texto. La proporción de la función es la siguiente:
pag.typewrite(text, interval)
SEO text
lo que desea escribir en el campo y interval
es el tiempo en segundos entre cada pulsación de tecla. Aquí hay un ejemplo:
pag.typewrite('Junaid Khalid', 1)
La secuencia de comandos anterior aplicará el texto «Junaid Khalid» en el campo seleccionado actualmente con una pausa de 1 segundo entre cada pulsación de tecla.
Otra forma en que se puede usar esta función es ingresar una lista de teclas que desea presionar en una secuencia. Para hacer esto por código, vea el siguiente ejemplo:
pag.typewrite(['j', 'u', 'n', 'a', 'i', 'd', 'e', 'backspace', 'enter'])
En el ejemplo anterior, el texto junaide
para entrar, y posteriormente eliminar el final e
. La entrada en el campo de texto se ingresará presionando el Enter
llave.
Función de tecla de acceso rápido ()
Si no ha notado esto hasta ahora, no se mencionan las claves que mostramos anteriormente para operaciones combinadas como Control + C
para el pedido de copia. En caso de que se lo pregunte, puede hacerlo pasando la lista ['ctrl', 'c']
al typewrite()
función, estás equivocado. El es typewrite()
presione la función de esos dos botones en secuencia, no al mismo tiempo. Y como probablemente ya sepa, para ejecutar el comando de copia, necesita el C
clave y la ctrl
llave.
Para presionar dos o más teclas a la vez, puede hotkey()
función, como se muestra aquí:
pag.hotkey('shift', 'enter')
pag.hotkey('ctrl', '2' ) # For the @ symbol
pag.hotkey('ctrl', 'c') # For the copy command
Función de pantalla ()
Si desea tomar una foto de la pantalla de todos modos, debe hacerlo screenshot()
La función es la que estás buscando. Veremos cómo podemos implementar eso usando PyAutoGUI
:
scree_shot = pag.screenshot() # to store a PIL object containing the image in a variable
Esto almacenará un PIL un objeto en el que la imagen es una variable.
Sin embargo, si desea almacenar la captura de pantalla directamente en su computadora, puede llamar al screenshot
funciona así en lugar de:
pag.screenshot('ss.png')
Esto guardará la captura de pantalla en un archivo, con el nombre de archivo dado, en su computadora.
Funciones de declaración (), alertas () y aviso ()
Las siguientes funciones son el último conjunto de funciones que cubriremos en este tutorial. A continuación se muestra una lista de las funciones del cuadro de mensaje disponibles en PyAutoGUI
:
- Cuadro de confirmación: muestra información y le ofrece dos opciones.
OK
yCancel
- Cuadro de alerta: muestra información y reconoce que la ha leído. Muestra un botón, es decir
OK
- Cuadro de aviso: solicita cierta información al usuario y, al ingresar, el usuario debe
OK
botón
Ahora que hemos visto los tipos, veremos cómo podemos mostrar estos botones en la pantalla en el mismo orden que el anterior:
pag.confirm("Are you ready?")
pag.alert("The program has crashed!")
pag.prompt("Please enter your name: ")
En el resultado, verá la siguiente secuencia de cuadros de mensaje.
Confirmar:
Te puede interesar:OpenGL avanzado en Python con PyGame y PyOpenGLAdvertencia:
Rápido:
Conclusión
En este tutorial, aprendimos cómo usarlo. PyAutoGUI
biblioteca automatizada en Python. Comenzamos hablando de los requisitos previos para este tutorial, su proceso de instalación para varios sistemas operativos y luego aprendimos sobre algunas de sus funciones generales. Luego, estudiamos las funciones específicas de los movimientos del mouse, el control del mouse y el control del teclado.
Después de seguir este tutorial, debería poder usarlo PyAutoGUI
para automatizar las operaciones de la GUI para tareas repetitivas en su propia aplicación.