Quantcast
Channel: Framboise 314, le Raspberry Pi à la sauce française….
Viewing all articles
Browse latest Browse all 1014

Automatisation : Simuler les appuis de touches sur le clavier

$
0
0

Cet article a pour but de décrire comment automatiser des appuis de touches dans une application.

En effet, on me demande souvent de faire des actions répétitives sur des sites (toutes les heures).

Or comme il se trouve que j’ai un RaspberryPI qui tourne en permanence (comme beaucoup) il pourrait très bien se saisir de cette tâche.

NIVEAU_confirmé

Cliquez pour avoir la définition des niveaux.

Le projet

Le but du projet est d’effectuer les étapes suivantes toutes les 45 minutes :

  1. Lancer le focus sur l’application Mozilla déjà lancée
  2. Ouvrir une nouvelle fenêtre de navigation dans un nouvel onglet (pour ne pas perturber les fenêtres déjà actives)
  3. Lancer un site web dans la barre d’adresse
  4. Lancer un deuxième site web dans la même barre d’adresse
  5. Refermer l’onglet

Les outils de simulation des touches

Nous utiliserons comme application xdotool qui est assez complet car il permet non seulement de simuler les touches mais également d’activer des fenêtres ou simuler la souris. Personnellement j’évite d’utiliser la souris, car elle est trop liée aux positionnements des fenêtres. On privilégiera donc les raccourcis claviers qui ont beaucoup plus de chance de réussir si la fenêtre est active.

Installation de xdotool

On est sur de l’installation classique.

# Installation du paquet de configuration
sudo apt-get update & sudo apt-get upgrade
sudo apt-get install xdotool

Utilisation de xdotool

Les commandes de base qui vont nous intéresser sont les suivantes :

# Pour saisir une touche de fonction (ctrl + t)
xdotool key ctrl+t
# Pour saisir du texte
xdotool type 'Mon texte à saisir'

Création du fichier Batch de séquencement des touches

Voici le fichier batch qui va simuler la saisie clavier correspondant aux différentes étapes du projet, il a été écrit dans un fichier /home/pi/SimuleClavier.sh avec nano :

nano /home/pi/SimuleClavier.sh

Saisir les lignes suivantes :

## =====================================================================
## === SimuleClavier.sh à mettre en cron /*45  (toute les 45 minutes) ==
## =====================================================================
#!/bin/bash

sleep 5s
# Activation de Mozilla
# Le navigateur doit déjà être lancé
WID=`xdotool search "Mozilla Firefox" | head -1`
xdotool windowactivate --sync $WID
sleep 2s
# Nouvel Onglet dans mozilla
xdotool key ctrl+t
sleep 2s
# Adresse du site à lancer
xdotool key alt+d
xdotool type 'http://www.mon_site.fr/bidule.php?pseudo=Le_Pseudo_De_Cnx'
xdotool key Return
sleep 10s
# Autre site à  lancer
xdotool key alt+d
xdotool type 'http://www.mon_site_2.fr/redirection.php'
xdotool key Return
sleep 20s
# Fermeture de l'onglet
xdotool key ctrl+w

Quittez nano à l’aide de CTRL+X et Y

Remarque
La touche alt+d permet de sélectionner la barre d’adresse du navigateur. En effet après chaque lancement de site la barre d’adresse perd le focus.

Pour les sites c’est ce que vous voulez mais il est parfois intéressant de voir comment ils fonctionnent. Dans mon cas, le passage du pseudo en paramètre permet d’éviter de le saisir dans la fenêtre de connexion.

Rendez ensuite votre script exécutable à l’aide de l’instruction suivante :

chmod 777 /home/pi/SimuleClavier.sh

Automatisation de la tâche

Nous utiliserons cron via l’installation suivante :

sudo apt-get install gnome-schedule

Il faudra ensuite créer une tâche planifiée. Vous pouvez le faire par l’interface graphique ou en ligne de commande.

Méthode ligne de commande

crontab -e

Choisir nano. Ce qui va lancer le fichier de configuration avec nano. Il vous faudra rajouter le dernière ligne pour lancer le script toutes les 45 secondes

# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
*/45 * * * * /home/pi/SimuleClavier.sh

Quittez nano à l’aide de CTRL+X et Y

Méthode graphique

Suite à l’installation une nouvelle icône « Scheduled tasks » est présente dans le menu démarrer :

 

 

 

 

 

 

 

En cliquant dessus une fenêtre de paramétrage s’ouvre

 

 

 

 

 

 

 

Créez une nouvelle tâche et saisissez comme commande /home/pi/SimuleClavier.sh puis Xapplication. Choisissez ensuite en mode « Advanced » –> */45 qui correspond à 45 minutes.

Ça y est votre tâche est planifiée pour s’exécuter toutes les 45 minutes.

Pour aller plus loin

Il peut être intéressant de travailler en tâche de fond le lancement des sites web sans interactions graphiques. On peut pour cela utiliser un script python qui ressemblerait à cela en Python version 2 en version 3 c’est différent :

#!/usr/bin/env python
import urllib
f = urllib.urlopen("http://www.mon_site.fr/bidule.php?pseudo=Le_Pseudo_De_Cnx")
s = f.read()
print(s)

Sources


Viewing all articles
Browse latest Browse all 1014

Trending Articles