Juin
30
|
Lorsque l’on développe une application, en général , on essaye de la tester au maximum…
Pour les applications AndroidW, Google nous fournit un outil qui permet de scripter des interactions avec un téléphone ou un émulateur.
Je l’ai testé… et cela s’avère être fort utile ! Comme souvent avec ce type d’outils, configurer ses scripts prend du temps, mais une fois que c’est fait, il n’y a plus qu’à les rejouer afin d’effectuer tous les tests codés !
Dans la vidéo ci-dessous, on voit :
- sur la partie de gauche, un émulateur Android,
- en haut à droite, la ligne de commande utilisée
- et en bas à droite le répertoire où le script est situé.
Ma seule action durant la vidéo, est d’appuyer sur la touche Entrée pour lancer la commande.
Le script utilisé est assez simple. C’est en langage pythonW mais très facilement utilisable même lorsqu’on ne le connait pas :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | # Importer les modules necessaires au programme from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice # Se connecter print "Connexion Emulateur" device = MonkeyRunner.waitForConnection(10, 'emulator-5554') #device.wake(); #device.press('KEYCODE_MENU', 'DOWN_AND_UP') # Deployer et installer une application #device.installPackage('myproject/bin/MyApplication.apk') # variable avec le nom du paquetage package = 'com.android.thewongandonly.QuickDraw' # Nom de l'activite a lancer activity = 'QuickDraw' # Nom du composant a demarrer runComponent = package + '/.' + activity print "Lancer application" device.startActivity(component=runComponent) MonkeyRunner.sleep(3) print "Effacer dessin" device.press('KEYCODE_MENU', 'DOWN_AND_UP') MonkeyRunner.sleep(1) device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') #device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_CENTER', 'DOWN_AND_UP') MonkeyRunner.sleep(1) # Quelques variables point1 = (50, 210) point2 = (145, 590) point3 = (240, 250) point4 = (335, 590) point5 = (430, 210) duration = 1 steps = 30 print "Dessiner" device.drag(point1, point2, duration, steps) device.drag(point2, point3, duration, steps) device.drag(point3, point4, duration, steps) device.drag(point4, point5, duration, steps) MonkeyRunner.sleep(1) print "Stylo 2" device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP') print "Menu ABC" device.press('KEYCODE_MENU', 'DOWN_AND_UP') MonkeyRunner.sleep(2) device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_CENTER', 'DOWN_AND_UP') MonkeyRunner.sleep(1) device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_CENTER', 'DOWN_AND_UP') MonkeyRunner.sleep(3) print "Texte" device.type("Cool") device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_CENTER', 'DOWN_AND_UP') device.drag((110, 720), (435, 720), duration, 10) # Takes a screenshot print "Capturer" result = device.takeSnapshot() # Writes the screenshot to a file print "Sauvegarder" result.writeToFile('../../../../../test/demo.png', 'png') print "Stylo 1" device.press('KEYCODE_DPAD_LEFT', 'DOWN_AND_UP') |
Trois classes sont disponibles :
- MonkeyDevice pour interagir avec un téléphone ou un émulateur, …
- MonkeyRunner pour se connecter, faire des pauses, …
- MonkeyImage pour manipuler des images, les comparer, …
L’application utilisée sur l’émulateur est Draw!
Bonjour,
d’abord merci pour ton explication , mais même avec j’ai un problème.
Je voudrais moi aussi utiliser le monkey runner mais je n’arrive pas à lancer mon script.
Quand je lance la même ligne de commande que toi (depuis monkeyrunner.bat se trouvant dans le SDK fourni), j’ai une erreur me disant que je dois rajouter le plugin (-p, -v ou -s) et mon script ne se lance pas.
@ Flo : Salut,
C’est quoi le message exact (copier/coller de la fenêtre DOS) ?
Whiler : Salut et merci pour ta réponse rapide,
Le problème s’est réglé lorsque j’ai utilisé la fenêtre DOS normalement en ayant modifié mon PATH, plutôt que de lancer monkeyrunner.exe
Maintenant, j’ai ça :
2
TypeError: press: The 3rd argument is required
et dans la doc, il n’y a pas de 3ème argument.
@ Flo : Le path, c’est path étonnant…
Pour le device.press, comme on le voit dans mon exemple, je n’utilise également que 2 paramètres… et cela fonctionne… tu dois probablement utiliser un autre type de périphérique ou une autre version de l’API…
Bonjour, serait-ce possible de faire cette manip sans avoir au préalable rooté le téléphone, car chez moi seul un émulateur ou téléphone rooté répond à Monkey…
@ Pantoufle : Je ne sais pas… tout ce que j’ai est rooté
wow thanks you are genius!!!
merci, merci!!
wgetandroidsnapshot is great program!!!
modifié/traduit par Whiler
Politique de confidentialité