{"id":2547,"date":"2011-06-30T00:00:17","date_gmt":"2011-06-29T22:00:17","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=2547"},"modified":"2012-03-03T13:21:19","modified_gmt":"2012-03-03T12:21:19","slug":"piloter-son-android","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2011\/06\/30\/piloter-son-android\/","title":{"rendered":"Piloter son Android"},"content":{"rendered":"<p>Lorsque l&rsquo;on d\u00e9veloppe une application, en g\u00e9n\u00e9ral <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/happy.gif\" alt=\"(lol)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> , on essaye de la tester au maximum&#8230;<\/p>\n<p>Pour les applications <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Android\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Android\" style=\"\" >Android<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>, Google nous fournit un <a target=\"_blank\" href=\"https:\/\/developer.android.com\/guide\/developing\/tools\/monkeyrunner_concepts.html\">outil<\/a> qui permet de scripter des interactions avec un t\u00e9l\u00e9phone ou un \u00e9mulateur.<\/p>\n<p>Je l&rsquo;ai test\u00e9&#8230; et cela s&rsquo;av\u00e8re \u00eatre fort utile&nbsp;! <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/yes.gif\" alt=\"(y)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/>  Comme souvent avec ce type d&rsquo;outils, configurer ses scripts prend du temps, mais une fois que c&rsquo;est fait, il n&rsquo;y a plus qu&rsquo;\u00e0 les rejouer afin d&rsquo;effectuer tous les tests cod\u00e9s&nbsp;!<\/p>\n<p>Dans la vid\u00e9o ci-dessous, on voit&nbsp;:<\/p>\n<ul>\n<li>sur la partie de gauche, un \u00e9mulateur Android,<\/li>\n<li>en haut \u00e0 droite, la ligne de commande utilis\u00e9e<\/li>\n<li>et en bas \u00e0 droite le r\u00e9pertoire o\u00f9 le script est situ\u00e9.<\/li>\n<\/ul>\n<p>Ma seule action durant la vid\u00e9o, est d&rsquo;appuyer sur la touche <em>Entr\u00e9e<\/em> pour lancer la commande.<br \/>\n<center>\n<div class=\"youtube-embed\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\">\n\t<meta itemprop=\"url\" content=\"https:\/\/www.youtube.com\/v\/gboZXkLKHzc\" \/>\n\t<meta itemprop=\"name\" content=\"Piloter son Android\" \/>\n\t<meta itemprop=\"description\" content=\"Piloter son Android\" \/>\n\t<meta itemprop=\"uploadDate\" content=\"2011-06-30T00:00:17+02:00\" \/>\n\t<meta itemprop=\"thumbnailUrl\" content=\"https:\/\/i.ytimg.com\/vi\/gboZXkLKHzc\/default.jpg\" \/>\n\t<meta itemprop=\"embedUrl\" content=\"https:\/\/www.youtube.com\/embed\/gboZXkLKHzc\" \/>\n\t<meta itemprop=\"height\" content=\"340\" \/>\n\t<meta itemprop=\"width\" content=\"560\" \/>\n\t<iframe loading=\"lazy\" style=\"border: 0;\" class=\"youtube-player\" width=\"560\" height=\"340\" src=\"https:\/\/www.youtube.com\/embed\/gboZXkLKHzc\" allowfullscreen><\/iframe>\n<\/div>\n<\/center><br \/>\n&nbsp;<br \/>\nLe script utilis\u00e9 est assez simple. C&rsquo;est en langage <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Python_(langage)\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: python\" style=\"\" >python<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup> mais tr\u00e8s facilement utilisable m\u00eame lorsqu&rsquo;on ne le connait pas&nbsp;:<br \/>\n<!--more--><\/p>\n<div class=\"codecolorer-container python dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/><\/div><\/td><td><div class=\"python codecolorer\"><span class=\"co1\"># Importer les modules necessaires au programme<\/span><br \/>\n<span class=\"kw1\">from<\/span> com.<span class=\"me1\">android<\/span>.<span class=\"me1\">monkeyrunner<\/span> <span class=\"kw1\">import<\/span> MonkeyRunner<span class=\"sy0\">,<\/span> MonkeyDevice<br \/>\n<br \/>\n<span class=\"co1\"># Se connecter<\/span><br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Connexion Emulateur&quot;<\/span><br \/>\ndevice <span class=\"sy0\">=<\/span> MonkeyRunner.<span class=\"me1\">waitForConnection<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'emulator-5554'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"co1\">#device.wake();<\/span><br \/>\n<span class=\"co1\">#device.press('KEYCODE_MENU', 'DOWN_AND_UP')<\/span><br \/>\n<br \/>\n<span class=\"co1\"># Deployer et installer une application<\/span><br \/>\n<span class=\"co1\">#device.installPackage('myproject\/bin\/MyApplication.apk')<\/span><br \/>\n<br \/>\n<span class=\"co1\"># variable avec le nom du paquetage<\/span><br \/>\npackage <span class=\"sy0\">=<\/span> <span class=\"st0\">'com.android.thewongandonly.QuickDraw'<\/span><br \/>\n<br \/>\n<span class=\"co1\"># Nom de l'activite a lancer<\/span><br \/>\nactivity <span class=\"sy0\">=<\/span> <span class=\"st0\">'QuickDraw'<\/span><br \/>\n<br \/>\n<span class=\"co1\"># Nom du composant a demarrer<\/span><br \/>\nrunComponent <span class=\"sy0\">=<\/span> package + <span class=\"st0\">'\/.'<\/span> + activity<br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Lancer application&quot;<\/span><br \/>\ndevice.<span class=\"me1\">startActivity<\/span><span class=\"br0\">&#40;<\/span>component<span class=\"sy0\">=<\/span>runComponent<span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Effacer dessin&quot;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_MENU'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"co1\">#device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_CENTER'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"co1\"># Quelques variables<\/span><br \/>\npoint1 &nbsp; <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">50<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">210<\/span><span class=\"br0\">&#41;<\/span><br \/>\npoint2 &nbsp; <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">145<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">590<\/span><span class=\"br0\">&#41;<\/span><br \/>\npoint3 &nbsp; <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">240<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">250<\/span><span class=\"br0\">&#41;<\/span><br \/>\npoint4 &nbsp; <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">335<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">590<\/span><span class=\"br0\">&#41;<\/span><br \/>\npoint5 &nbsp; <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">430<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">210<\/span><span class=\"br0\">&#41;<\/span><br \/>\nduration <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><br \/>\nsteps &nbsp; &nbsp;<span class=\"sy0\">=<\/span> <span class=\"nu0\">30<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Dessiner&quot;<\/span><br \/>\ndevice.<span class=\"me1\">drag<\/span><span class=\"br0\">&#40;<\/span>point1<span class=\"sy0\">,<\/span> point2<span class=\"sy0\">,<\/span> duration<span class=\"sy0\">,<\/span> steps<span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">drag<\/span><span class=\"br0\">&#40;<\/span>point2<span class=\"sy0\">,<\/span> point3<span class=\"sy0\">,<\/span> duration<span class=\"sy0\">,<\/span> steps<span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">drag<\/span><span class=\"br0\">&#40;<\/span>point3<span class=\"sy0\">,<\/span> point4<span class=\"sy0\">,<\/span> duration<span class=\"sy0\">,<\/span> steps<span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">drag<\/span><span class=\"br0\">&#40;<\/span>point4<span class=\"sy0\">,<\/span> point5<span class=\"sy0\">,<\/span> duration<span class=\"sy0\">,<\/span> steps<span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Stylo 2&quot;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_RIGHT'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Menu ABC&quot;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_MENU'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_RIGHT'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_RIGHT'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_CENTER'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_DOWN'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_UP'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_UP'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_UP'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_UP'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_CENTER'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nMonkeyRunner.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Texte&quot;<\/span><br \/>\ndevice.<span class=\"kw2\">type<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Cool&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_RIGHT'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_CENTER'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><br \/>\ndevice.<span class=\"me1\">drag<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">110<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">720<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">435<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">720<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> duration<span class=\"sy0\">,<\/span> <span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"co1\"># Takes a screenshot<\/span><br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Capturer&quot;<\/span><br \/>\nresult <span class=\"sy0\">=<\/span> device.<span class=\"me1\">takeSnapshot<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"co1\"># Writes the screenshot to a file<\/span><br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Sauvegarder&quot;<\/span><br \/>\nresult.<span class=\"me1\">writeToFile<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'..\/..\/..\/..\/..\/test\/demo.png'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'png'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Stylo 1&quot;<\/span><br \/>\ndevice.<span class=\"me1\">press<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'KEYCODE_DPAD_LEFT'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'DOWN_AND_UP'<\/span><span class=\"br0\">&#41;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<br \/>\nTrois classes sont disponibles&nbsp;:<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/developer.android.com\/guide\/developing\/tools\/MonkeyDevice.html\">MonkeyDevice<\/a> pour interagir avec un t\u00e9l\u00e9phone ou un \u00e9mulateur, &#8230;<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/developer.android.com\/guide\/developing\/tools\/MonkeyRunner.html\">MonkeyRunner<\/a> pour se connecter, faire des pauses, &#8230;<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/developer.android.com\/guide\/developing\/tools\/MonkeyImage.html\">MonkeyImage<\/a> pour manipuler des images, les comparer, &#8230;<\/li>\n<\/ul>\n<blockquote><p>L&rsquo;application utilis\u00e9e sur l&rsquo;\u00e9mulateur est <a target=\"_blank\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.android.thewongandonly.QuickDraw\">Draw!<\/a><\/p><\/blockquote>\n<div class=\"thanks_button_div\" \n                  style=\"float: right; margin-right: 10px; margin-top:10px;\"><div id=\"thanksButtonDiv_2547_1\" style=\"background-image:url(https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_compact_brown1.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_2547_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_2547_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_2547_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(2547, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Merci\u00a0 5\"\n                  class=\"thanks_button thanks_compact thanks_brown1\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#00f;\"\n                  id=\"thanksButton_2547_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_2547_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Pour les applications Android, Google nous fournit un outil qui permet de scripter des interactions avec un t\u00e9l\u00e9phone ou un \u00e9mulateur.<\/p>\n<p>Je l\u2019ai test\u00e9\u2026 et cela s\u2019av\u00e8re \u00eatre fort utile ! Comme souvent avec ce type d\u2019outils, configurer ses scripts prend du temps, mais une fois que c\u2019est fait, il n\u2019y a plus qu\u2019\u00e0 les rejouer afin d\u2019effectuer tous les tests cod\u00e9s !<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[132,6],"tags":[125,158,27,96],"class_list":["post-2547","post","type-post","status-publish","format-standard","hentry","category-android","category-dev","tag-b3lly","tag-android","tag-coloration-syntaxique","tag-video"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=2547"}],"version-history":[{"count":0,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2547\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=2547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=2547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=2547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}