Initiation à l’outil Monkey Runner
Bonjour à tous et bienvenue sur mon blog pour ce second article dédié cette fois-ci à l’outil Monkey Runner (Introduction de l’outil par Google ici). Ce post s’inscrit dans la continuité du premier, qui parlait de Monkey (lien ici).
Cet article ne sera pas un cours sur Monkey Runner mais simplement une initiation, le but étant de découvrir par vous-même la puissance de cet outil. Monkey Runner est un outil qui permet au développeur de créer des programmes qui contrôlent le device/émulateur connecté. Les programmes seront développés en Python, et permettent d’installer des applications, de les lancer, de simuler des gestures, de prendre des screenshots, etc. Tout ce qu’il nous faut pour compléter un script Ant qui pourrait builder votre application par exemple. Vous l’avez compris, si vous avez plusieurs applications, il devient intéressant d’automatiser les builds/tests, etc. pour gagner du temps.. et aussi pour la satisfaction personnelle de laisser la machine faire tout le travail !
Fini de parler, et entrons dans le concret. L’API monkeyrunner est contenue dans 3 modules, qui sont :
- MonkeyRunner : Classe fournissant des méthodes permettant la connexion à un device ou un émulateur.
- MonkeyDevice : Classe fournissant des méthodes permettant d’installer/désinstaller des applis, d’envoyer des gestures ou des frappes de clavier à une application.
- MonkeyImage : Classe fournissant des méthodes permettant de prendre des screenshots.
Créons notre fichier monkeyrunner, que nous appellerons mymonkey.py par exemple, pour au moins avoir la coloration syntaxique de vim =D.
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
import commands
import sys
# demarrage du script
print "start"
# Connexion au device courant, retourne un objet MonkeyDevice
device = MonkeyRunner.waitForConnection()
apk_path = device.shell('pm path com.myapp')
if apk_path.startswith('package:'):
print "myapp already installed."
else:
print "myapp not installed, installing APKs..."
device.installPackage('myapp.apk')
print "launching myapp..."
device.startActivity(component='com.myapp/com.myapp.MainActivity')
#screenshot
MonkeyRunner.sleep(1)
result = device.takeSnapshot()
result.writeToFile('./screenshots/splash.png','png')
print "screen 1 taken"
#Envoi d'un clic sur la touche menu
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
print "end of script"Pour le lancer, il vous suffit de taper la commande
monkeyrunner mymonkey.pyNote 1: L’exécutable monkeyrunner se trouve dans le répertoire [android-sdk-path]/tools/
Note 2: Si vous développez sur windows, vous devrez peut-être mettre les chemins absolus (C:/etc.).
Note 3: Je ne peux que vous encourager à lancer vos tests unitaires aussi !
Et voilà, vous avez ici un script le plus basique du monde, permettant de se connecter à un device, d’installer une application, la lancer, prendre un screenshot et appuyer sur la touche menu. À vous d’imaginer la suite =D
Si vous avez des critiques/remarques/suggestions, n’hésitez pas à me laisser un commentaire, et si cet article vous a été utile, partagez-le !