Programa un robot para que tome el control de tu ordenador.

PyAutoGUI es un módulo de Python para controlar mediante programación el ratón y el teclado. Se puede utilizar para programar robots que hagan cosas por ti en el entorno de escritorio de tu ordenador

Esta librería escrita en python y contiene un conjunto de funcionalidades para el manejo autónomo de Ratón, Teclado, Mensajes y tomas de fotos del escritorio.

Funciones para el control del ratón

moveTo(x, y, duration=n) : Mueve el mouse a las coordenadas x,y en un tiempo de n segundos.
moveRel(xOffset, yOffset, duration=n) : Mueve el mouse desde su posición actual a las coordenadas relativas a  xOffset, yOffset  en un tiempo de n segundos.
dragTo(x, y, duration=n) : Arrastre el mouse  a las coordenadas x,y en un tiempo de n segundos.
dragRel(xOffset, yOffset, duration=num_seconds) :Arrastre el mouse desde su posición actual a las coordenadas relativas a  xOffset, yOffset  en un tiempo de nsegundos.
click(x, y, num_de_clicks, interval, button) : Hacer click en la posición x, y, donde num_de_clicks es la cantidad de clicks a dar y interval  es el tiempo en segundos entre cada click, button es el botón del mouse a oprimir (left, middle o right). También existen otras alternativas como rightClick(x,y)middleClick(x,y)doubleClick(x,y) y tripleClick(x,y).

scroll(cantidad_a_desplazarse, x, y): Mueve el scroll en dependencia  a la cantidad a desplazase, si es positivo se desplazará hacia arriba y si es negativo se desplazará hacia abajo.

Funciones para el control del teclado

typewrite(teclas, interval):Oprime las teclas del teclado contenidas en la cadena o lista teclas. Si es una cadena como por ejemplo “Codigo 200”, el robot teclea cada caracter del teclado. La otra variante es que teclas sea una lista de teclas [‘a’, ‘b’, ‘c’, ‘left’, ‘backspace’, ‘enter’, ‘f1’]. El tiempo entre tecla y tecla será en segundos y lo será configurado en la parámetro interval.

hotkey(lista) : Esta funcionalidad oprime las teclas de acceso rápido como Ctrl-S o Ctrl-Shift-1 donde se puede hacer pasando una lista de nombres de teclas.

La lista completa de nombres clave se encuentra en pyautogui.KEYBOARD_KEYS.

Funciones de captura de pantalla: En Linux, debe ejecutar sudo apt-get install scrot para usar las funciones de captura de pantalla.

screenshot(image): Captura la pantalla y guarda la imágen en la dirección pasada por parámetro en la variable image.

locateOnScreen(image): Devuelve las coordenadas y el tamaño (left, top, width, height) en el escritorio donde se encuentra la imagen que coincide con la pasada por parámetro.

locateAllOnScreen(image): Devuelve un listado con las coordenadas y el tamaño (left, top, width, height) en el escritorio donde se encuentran todas las apariciones que coinciden con la imagen pasada por parámetro.

A continuación pongo un ejemplo donde el robot accede a los botones  de la calculadora a través del reconocimiento de imágenes.

Primeramente tomé fotos de los botones de la calculadora:

A continuación programé el robot para que identificara en el escritorio donde estaba la calculadora y sus botones. El proposito es que hiciera el calculo 12+23.

#ORIENTAR AL ROBOT QUE REALICE UNA OPERACION EN LA CALCULADORA
########
### 12+23=35
import pyautogui
import time
tiempo_entre_operaciones = 2 #1 Segundo
#5 segundos antes de empezar la operacion
time.sleep(5)
time.sleep(tiempo_entre_operaciones)
#Selecciono la imagen correspondiente al 1
element = pyautogui.locateCenterOnScreen('imagenes/1.png')
#Selecciono las coordenadas de la imagen en el escritorio de la pc.
x,y = element
#El robot se mueve hasta esa coordenada
pyautogui.moveTo(x,y)
#El robot da click en esa coordenada
pyautogui.click(x, y)
time.sleep(tiempo_entre_operaciones)
#Selecciono la imagen correspondiente al 2
element = pyautogui.locateCenterOnScreen('imagenes/2.png')
#Selecciono las coordenadas de la imagen en el escritorio de la pc.
x,y = element
#El robot se mueve hasta esa coordenada
pyautogui.moveTo(x,y)
#El robot da click en esa coordenada
pyautogui.click(x, y)
time.sleep(tiempo_entre_operaciones)
#Selecciono la imagen correspondiente al +
element = pyautogui.locateCenterOnScreen('imagenes/+.png')
#Selecciono las coordenadas de la imagen en el escritorio de la pc.
x,y = element
#El robot se mueve hasta esa coordenada
pyautogui.moveTo(x,y)
#El robot da click en esa coordenada
pyautogui.click(x, y)
time.sleep(tiempo_entre_operaciones)
#Selecciono la imagen correspondiente al 2
element = pyautogui.locateCenterOnScreen('imagenes/2.png')
#Selecciono las coordenadas de la imagen en el escritorio de la pc.
x,y = element
#El robot se mueve hasta esa coordenada
pyautogui.moveTo(x,y)
#El robot da click en esa coordenada
pyautogui.click(x, y)
time.sleep(tiempo_entre_operaciones)
#Selecciono la imagen correspondiente al 3
element = pyautogui.locateCenterOnScreen('imagenes/3.png')
#Selecciono las coordenadas de la imagen en el escritorio de la pc.
x,y = element
#El robot se mueve hasta esa coordenada
pyautogui.moveTo(x,y)
#El robot da click en esa coordenada
pyautogui.click(x, y)
time.sleep(tiempo_entre_operaciones)
#Selecciono la imagen correspondiente al =
element = pyautogui.locateCenterOnScreen('imagenes/=.png')
#Selecciono las coordenadas de la imagen en el escritorio de la pc.
x,y = element
#El robot se mueve hasta esa coordenada
pyautogui.moveTo(x,y)
#El robot da click en esa coordenada
pyautogui.click(x, y)

Listo ejecuten este fichero y verán su funcioanmiento. Recuerden que depende de la librería de Python pyautogui por lo que tienen que ejecutar pip install pyautogui, y también de la aplicación scrot por lo que la tienen que instalar en el ordenador sudo apt-get install scrot.

Existen otra variante como pyrobot la cual es una alternativa a la clase Robot de Java.

Leave a Reply

Your email address will not be published. Required fields are marked *