Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¼¸¿îAndroid Ó¦ÓÃ×Ô¶¯»¯²âÊÔ¹¤¾ß
 
  3756  次浏览      29
 2018-4-20 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÍøÂ磬,±¾ÎĽéÉܼ¸¿îÁ÷ÐÐµÄ AndroidÓ¦ÓÃ×Ô¶¯»¯²âÊÔ¹¤¾ß¡£ÏêÇéÇë¿´ÏÂÎÄ

¼òÊö£º

±¾ÎĽéÉܼ¸¿îÁ÷ÐÐµÄ AndroidÓ¦ÓÃ×Ô¶¯»¯²âÊÔ¹¤¾ß¡£

Monkey²âÊÔ£ºËæ»ú²âÊÔ£¬Ñ¹Á¦²âÊÔ£¬ÔËÐÐÔÚÄ£ÄâÆ÷»òʵ¼ÊÉ豸ÖС£

MonkeyRunner²âÊÔ£º²Ù×÷¼òµ¥£¬¿ÉÂ¼ÖÆ²âÊԽű¾£¬¿ÉÊÓ»¯²Ù×÷£¬Ö÷ÒªÉú³É×ø±êµÄ×Ô¶¯»¯²Ù×÷£¬ÒÆÖ²ÐÔ²»Ç¿

Robotium ²âÊÔ

Ronaorex ²âÊÔ

Appium ²âÊÔ

UI Automator ²âÊÔ

TestBird²âÊÔ

1¡¢Monkey ²âÊÔ

Monkey ¼´ºï×Ó£¬Monkey ²âÊÔ£¬¾ÍÏñÒ»Ö»ºï×Ó£¬ÔÚµçÄÔÃæÇ°£¬ÂÒÇüüÅÌÔÚ²âÊÔ¡£

Monkey ²âÊÔÖ÷ÒªÓÃÓÚAndroid Ó¦ÓóÌÐòѹÁ¦²âÊÔµÄС¹¤¾ß£¬Ö÷ҪĿµÄ¾ÍÊÇΪÁ˲âÊÔappÊÇ·ñ»áCrash¡£

Monkey ²âÊÔÔ­Àí£ºMonkey ÊÇ Android ÖеÄÒ»¸öÃüÁîÐй¤¾ß£¬¿ÉÒÔÔËÐÐÔÚÄ£ÄâÆ÷Àï»òʵ¼ÊÉ豸ÖС£ËüÏòϵͳ·¢ËÍÎ±Ëæ»úµÄÓû§Ê¼þÁ÷(Èç°´¼üÊäÈë¡¢´¥ÃþÆÁÊäÈë¡¢ÊÖÊÆÊäÈëµÈ)£¬ÊµÏÖ¶ÔÕýÔÚ¿ª·¢µÄÓ¦ÓóÌÐò½øÐÐѹÁ¦²âÊÔ¡£Í¨³£Ò²³ÆËæ»ú²âÊÔ»òÕßÎȶ¨ÐÔ²âÊÔ¡£Monkey ²âÊÔÊÇÒ»ÖÖΪÁ˲âÊÔÈí¼þµÄÎȶ¨ÐÔ¡¢½¡×³ÐԵĿìËÙÓÐЧµÄ·½·¨¡£

1 > Monkey ÌØÕ÷

A. ²âÊԵĶÔÏó½öΪӦÓóÌÐò°ü£¬ÓÐÒ»¶¨µÄ¾ÖÏÞÐÔ¡£

B. Monky ²âÊÔʹÓõÄʼþÁ÷Êý¾ÝÁ÷ÊÇËæ»úµÄ£¬²»ÄܽøÐÐ×Ô¶¨Òå¡£

C. ¿É¶Ô MonkeyTestµÄ¶ÔÏó£¬Ê¼þÊýÁ¿£¬ÀàÐÍ£¬ÆµÂʵȽøÐÐÉèÖá£

D.Monkey Ëä¿É¸ù¾ÝÒ»¸öÖ¸¶¨µÄÃüÁî½Å±¾·¢ËͰ´¼üÏûÏ¢£¬µ«Æä²»Ö§³ÖÌõ¼þÅжϣ¬Ò²²»Ö§³Ö¶ÁÈ¡´ý²â½çÃæµÄÐÅÏ¢À´Ö´ÐÐÑéÖ¤²Ù×÷¡£

E.Monkey ÔËÐÐÔÚÉ豸»òÄ£ÄâÆ÷ÉÏÃæ£¬¿ÉÒÔÍÑÀëPCÔËÐУ¬ÑéÖ¤´ý²âÓ¦ÓÃÔÚÕâÐ©Ëæ»úÐÔÊäÈëÃæÇ°ÊÇ·ñ»áÉÁÍË»òÕß±ÀÀ£¡£

2 > Monkey ³ÌÐò½éÉÜ

¢Ù Monkey ³ÌÐòÓÉ Android ϵͳ×Ô´ø£¬Ê¹ÓÃJavaÓïÑÔд³É£¬ÔÚAndroidÎļþϵͳÖеĴæ·Å·¾¶ÊÇ£º /system/framework/monkey.jar£»

¢Ú Monkey.jar ³ÌÐòÊÇÓÉÒ»¸öÃûΪ¡° monkey ¡±µÄShell½Å±¾À´Æô¶¯Ö´ÐУ¬shell½Å±¾ÔÚAndroidÎļþϵͳÖÐ µÄ´æ·Å·¾¶ÊÇ£º/system/bin/monkey£»

¢Û Monkey ÃüÁîÆô¶¯·½Ê½£º

a. ¿ÉÒÔͨ¹ý PC »ú CMD ´°¿ÚÖÐÖ´ÐÐ: adb shell monkey £û+ÃüÁî²ÎÊý£ýÀ´½øÐÐMonkey²âÊÔ

b. ÔÚPCÉÏ adb shell½øÈëAndroidϵͳ£¬Í¨¹ýÖ´ÐÐmonkey {+ÃüÁî²ÎÊý}À´½øÐÐMonkey ²âÊÔ

c. ÔÚAndroid»ú»òÕßÄ£ÄâÆ÷ÉÏÖ±½ÓÖ´ÐÐmonkeyÃüÁ¿ÉÒÔÔÚAndroid»úÉϰ²×°AndroidÖÕ¶ËÄ£ÄâÆ÷

¢Ü ¶ÔÌØ¶¨APP°ü½øÐвâÊÔµÄÃüÁîΪ adb shell monkey -p <pakage.name>

3 > ʵÀý

¢Ù ²âÊÔǰÌáÌõ¼þ

a. ½«ÊÖ»ú»Ö¸´³ö³§ÉèÖÃ

b. »Ö¸´³ö³§ÉèÖú󣬽øÈëÉèÖÃ-->¹ØÓÚÊÖ»ú-->¸ß¼¶ÉèÖÃ-->¹´Ñ¡¡®±£³Ö»½ÐÑ״̬¡¯

c. ÔÚÉèÖÃ->°²È«ÖÐÉèÖýâËøÍ¼°¸ÒÔ¼°PINÂë

d. Á¬½Ó adb tool

e. ÊÖ»ú¿ªÆôºǫ́log(*#*#3646633#*#*),¿ªÆômain log,£¬ mobile logºÍnet log

¢Ú ²âÊÔ²½Öè

a. ʹÓÃUSBÏßÁ¬½ÓÊÖ»úºÍµçÄÔ

b. ÔÚµçÄÔÖÐÊäÈëMonkeyÃüÁ

adb shell monkey -p <package.name> --throttle 380 -v -s 3500 300000 >C:\monkey_log.txt

c. ÔÚMonkey½áÊøÒÔºó²é¿´ËüÍ£ÁôµÄ½çÃæ²¢ÇÒ×öһЩ¼òµ¥µÄ²âÊÔ£¬È粦´òµç»°£¬·¢ËÍÐÅÏ¢µÈ

¢Û ²âÊÔ½á¹û

MonkeyµÄ²âÊÔ½á¹û¿ÉÒÔͨ¹ýmonkey_log.txt ²é¿´£¬Èç¹û²âÊÔ½á¹ûÕý³££¬ÔÚlog×îºóÒ»ÐлáÓÐmonkey finishedÏÔʾ²¢ÇÒÊÖ»úÔËÐÐÕý³£¡£Èç¹ûÓ¦ÓóÌÐò²úÉúÁËÓ¦ÓóÌÐò²»ÏìÓ¦ANR(application notresponding)µÄ´íÎó£¬Monkey½«»áÍ£Ö¹²¢±¨´í£¬Èç¹ûÓ¦ÓóÌÐò±ÀÀ£Crash»ò½ÓÊÕµ½ÈκÎʧ¿ØÒì³££¬MonkeyÒ²»áÍ£Ö¹²¢±¨´í¡£

a. ÔÚÔËÐÐMonkeyÃüÁîʱ£¬Óöµ½Crash»òÕßANR£¬¾Í»á×Ô¶¯ÖÕÖ¹¡£³ÌÐòÎÞÏìÓ¦µÄÎÊÌâ:ÔÚÈÕÖ¾ÖÐËÑË÷ ¡°ANR¡±

b.±ÀÀ£ÎÊÌ⣺ÔÚÈÕÖ¾ÖÐËÑË÷¡°Exception¡± (Èç¹û³öÏÖ¿ÕÖ¸Õ룬NullPointerException) ¿Ï¶¨ÊÇÓÐbug

ÀýÈçÔÚlog×îºóÒ»ÐÐÏÔʾcrashed at event ####of 300000 using seed 3500 ¡£

c.×îºóËÑË÷¡°error¡±

Ò»°ãÎÒÃÇÖ´ÐÐMonkeyʱ£¬ÔÚ3Íò´ÎÒÔÄÚ·¢ÉúCrashµÄ»°¾ÍÈÏΪMonkeyÊÇÓÐÎÊÌâµÄ£¬ÒªÌá½»PR¡£

¢Ü Ìá½» Monkey µÄPR

ÔÚÖ´ÐÐMonkeyÃüÁîʱ·¢ÉúCrash»òÕßANRʱÐèÒªÌá½»PR£¬¾ßÌåÌá½»MonkeyPRµÄ¹æÔòÈçÏ£º

a. ±êÌ⣺ÔÚPR±êÌâÖмÓÉÏ[Monkey] ÄÚÈÝ£ºÖ÷ÒªÒª°üº¬×Ô¼ºÖ´ÐеÄÃüÁîÒÔ¼°ÔÚ¶àÉٴη¢Éúcrash

b. ÄÚÈÝ£ºÖ÷ÒªÒª°üº¬×Ô¼ºÖ´ÐеÄÃüÁîÒÔ¼°ÔÚ¶àÉٴη¢Éúcrash

c .ÆäËü£ºÔÚPRÉÏÒª¸½ÉÏÏà¹ØµÄMonkey log»¹ÓÐÊÖ»úºǫ́¿ªÆôµÄlog£¬Èç¹ûÓÐÏà¹ØµÄÇ¿ÖÆ¹Ø±ÕµÄͼƬҲ¿ÉÒÔÌùÉÏ¡£

4 > Monkey ²ÎÊý

MonkeyÃüÁadb shell monkey -p <package.name> --throttle 380 -v -s 3500300000 > C:\monkey_log.txt£¬Õâ¸ömonkeyÃüÁµ±monkey test¹ý³ÌÖÐÓöµ½Crash»òÕßANR£¬¾Í»á×Ô¶¯ÖÕÖ¹¡£

C:\monkey_log.txtÖ¸½«Monkey µÄlog´æÔÚPC¶ËµÄCÅ̸ùĿ¼Ï¡£

³£¹æÀà²ÎÊý

1¡¢ -help

×÷ÓãºÁгö¼òµ¥µÄÓ÷¨

Àý£ºadb shell monkey -help Ò²¿É²»Ð´help

2¡¢-v

×÷ÓãºÃüÁîÐÐÉϵÄÿһ¸ö-v¶¼½«Ôö¼Ó·´À¡ÐÅÏ¢µÄÏêϸ¼¶±ð¡£

Level0£¨Ä¬ÈÏ£©£¬³ýÁËÆô¶¯¡¢²âÊÔÍê³ÉºÍ×îÖÕ½á¹ûÍâÖ»Ìṩ½ÏÉÙµÄÐÅÏ¢¡£

adb shell monkey -p com.shjt.map -v 100

Level1£¬ÌṩÁ˽ÏΪÏêϸµÄ²âÊÔÐÅÏ¢£¬ÈçÖð¸ö·¢Ë͵½ Activity µÄʼþÐÅÏ¢¡£

adb shell monkey -p com.shjt.map -v -v 100

Level2£¬ÌṩÁ˸ü¶àµÄÉèÖÃÐÅÏ¢£¬Èç²âÊÔÖÐÑ¡ÖлòδѡÖÐµÄ Activity ÐÅÏ¢¡£

adb shell monkey -p com.shjt.map -v -v -v 100

±È½Ï³£ÓõÄÊÇ-v -v -v£¬¼´×î¶àÏêϸÐÅÏ¢£¬Ò»°ã»á±£´æµ½Ö¸¶¨ÎļþÖй©¿ª·¢ÈËÔ±²éÕÒbugÔ­ÒòʱʹÓá£

Àý£ºadb shell monkey -v 10

ʼþÀà²ÎÊý

1¡¢-s <seed>

×÷ÓãºÎ±Ëæ»úÊýÉú³ÉÆ÷µÄseedÖµ¡£Èç¹ûÓÃÏàͬµÄseedÖµÔÙ´ÎÔËÐÐmonkey£¬½«Éú³ÉÏàͬµÄʼþÐòÁС£

Àý£ºadb shell monkey -s 1483082208904 -v 10

2¡¢--throttle <milliseconds>

×÷ÓãºÔÚʼþÖ®¼ä²åÈë¹Ì¶¨µÄʱ¼ä£¨ºÁÃ룩ÑÓ³Ù£¬Äã¿ÉÒÔʹÓÃÕâ¸öÉèÖÃÀ´¼õ»ºMonkeyµÄÔËÐÐËÙ¶È£¬Èç¹ûÄã²»Ö¸¶¨Õâ¸ö²ÎÊý£¬ÔòʼþÖ®¼ä½«Ã»ÓÐÑÓ³Ù£¬Ê¼þ½«ÒÔ×î¿ìµÄËÙ¶ÈÉú³É¡£

×¢£º³£ÓòÎÊý£¬Ò»°ãÉèÖÃΪ300ºÁÃ룬ԭÒòÊÇʵ¼ÊÓû§²Ù×÷µÄ×î¿ì300ºÁÃë×óÓÒÒ»¸ö¶¯×÷ʼþ£¬ËùÒÔ´Ë´¦Ò»°ãÉèÖÃΪ300ºÁÃë¡£

Àý£ºadb shell monkey --throttle 300 -v 10

3¡¢--pct-touch <percent>

×÷Ó㺵÷Õû´¥ÃþʼþµÄ°Ù·Ö±È¡££¨´¥ÃþʼþÊÇÖ¸ÔÚÆÁÄ»ÖеÄÒ»¸ödown-upʼþ£¬¼´ÔÚÆÁĻij´¦°´Ï²¢Ì§ÆðµÄ²Ù×÷£©

×¢£º³£ÓòÎÊý£¬´Ë²ÎÊýÉèÖÃÒªÊÊÓ¦µ±Ç°±»²âÓ¦ÓóÌÐòµÄ²Ù×÷£¬±ÈÈçÒ»¸öÓ¦ÓÃ80%µÄ²Ù×÷¶¼ÊÇ´¥Ãþ£¬ÄǾͿÉÒÔ½«´Ë²ÎÊýµÄ°Ù·Ö±ÈÉèÖóÉÏàÓ¦½Ï¸ßµÄ°Ù·Ö±È¡£

Àý£ºadb shell monkey --pct-touch 100 -v 10

4¡¢--pct-motion <percent>

×÷Ó㺵÷Õûmotionʼþ°Ù·Ö±È¡££¨motionʼþÊÇÓÉÆÁÄ»ÉÏij´¦Ò»¸ödownʼþ¡¢Ò»ÏµÁÐÎ±Ëæ»úµÄÒÆ¶¯Ê¼þºÍÒ»¸öupʼþ×é³É£©

×¢£º³£ÓòÎÊý£¬Ðè×¢ÒâµÄÊÇÒÆ¶¯Ê¼þÊÇÖ±Ïß»¬¶¯

Àý£ºadb shell monkey --pct-motion 100 -v 10

5¡¢--pct-trackball<percent>

×÷Ó㺵÷Õû¹ö¶¯Çòʼþ°Ù·Ö±È¡££¨¹ö¶¯ÇòʼþÓÉÒ»¸ö»ò¶à¸öËæ»úµÄÒÆ¶¯Ê¼þ×é³É£¬ÓÐʱ»á°éËæ×ŵã»÷ʼþ£©

×¢£º²»³£Ê¹ÓòÎÊý£¬ÏÖÔÚÊÖ»ú¼¸ºõûÓйö¶¯Çò£¬µ«¹ö¶¯ÇòʼþÖаüº¬ÇúÏß»¬¶¯Ê¼þ£¬ÔÚ±»²â³ÌÐòÐèÒªÇúÏß»¬¶¯Ê±¿ÉÒÔÑ¡Óô˲ÎÊý¡£

Àý£ºadb shell monkey --pct-trackball 100 -v 10

6¡¢--pct-nav<percent>

×÷Ó㺵÷Õû»ù±¾µÄµ¼º½Ê¼þ°Ù·Ö±È¡££¨µ¼º½Ê¼þÓÉ·½ÏòÊäÈëÉ豸µÄÉÏÏÂ×óÓÒ°´¼üËù´¥·¢µÄʼþ×é³É£©

×¢£º²»³£ÓòÙ×÷¡£

Àý£ºadb shell monkey --pct-nav 100 -v 10

7¡¢--pct-majornav<percent>

×÷Ó㺵÷ÕûÖ÷Òªµ¼º½Ê¼þµÄ°Ù·Ö±È¡££¨ÕâЩµ¼º½Ê¼þͨ³£»áµ¼ÖÂUI½çÃæÖе͝×÷ʼþ£¬Èç5-way¼üÅ̵ÄÖмä¼ü£¬»ØÍ˰´¼ü¡¢²Ëµ¥°´¼ü£©

×¢£º²»³£ÓòÙ×÷¡£

Àý£ºadb shell monkey --pct-majornav 100 -v 10

8¡¢--pct-syskeys<percent>

×÷Ó㺵÷Õûϵͳʼþ°Ù·Ö±È¡££¨ÕâЩ°´¼üͨ³£ÓÉϵͳ±£ÁôʹÓã¬ÈçHome¡¢Back¡¢Start Call¡¢EndCall¡¢ÒôÁ¿µ÷½Ú£©

×¢£º²»³£Óá£

Àý£ºadb shell monkey --pct-syskeys 100 -v 10

9¡¢--pct-appswitch<percent>

×÷Ó㺵÷ÕûActivityÆô¶¯µÄ°Ù·Ö±È¡££¨ÔÚËæ»úµÄʱ¼ä¼ä¸ôÖУ¬Monkey½«Ö´ÐÐÒ»¸östartActivity()µ÷Óã¬×÷Ϊ×î´ó³Ì¶È¸²¸Ç±»²â°üÖÐÈ«²¿ActivityµÄÒ»ÖÖ·½·¨£©

×¢£º²»³£Óá£

Àý£ºadb shell monkey --pct-appswitch 100 -v 5

10¡¢--pct-anyevent

×÷Ó㺵÷ÕûÆäËûʼþµÄ°Ù·Ö±È¡££¨Õâ°üº¬ËùÓÐÆäËûʼþ£¬Èç°´¼ü¡¢ÆäËûÔÚÉ豸Éϲ»³£Óõİ´Å¥µÈ£©

×¢£º²»³£Óá£

Àý£ºadb shell monkey --pct-anyevent 100 -v 5

Ô¼ÊøÀà²ÎÊý

1¡¢-p<allowed-package-name>

×÷ÓãºÈç¹ûÄãÖ¸¶¨Ò»¸ö»ò¶à¸ö°ü£¬Monkey½«Ö»ÔÊÐí·ÃÎÊÕâЩ°üÖеÄActivity¡£Èç¹ûÄãµÄÓ¦ÓóÌÐòÐèÒª·ÃÎÊÕâЩ°ü(ÈçÑ¡ÔñÁªÏµÈË)ÒÔÍâµÄActivity£¬ÄãÐèÒªÖ¸¶¨ÕâЩ°ü¡£Èç¹ûÄã²»Ö¸¶¨Èκΰü£¬Monkey½«ÔÊÐíϵͳÆô¶¯ËùÓаüµÄActivity¡£Ö¸¶¨¶à¸ö°ü£¬Ê¹Óöà¸ö-p£¬Ò»¸ö-pºóÃæ½ÓÒ»¸ö°üÃû¡£

×¢£º³£ÓòÎÊý¡£

Àý£ºadb shell monkey -p com.Android.browser -v 10

2¡¢-c<main-category>

×÷ÓãºÈç¹ûÄãÖ¸¶¨Ò»¸ö»ò¶à¸öÀà±ð£¬Monkey½«Ö»ÔÊÐíϵͳÆô¶¯ÕâЩָ¶¨Àà±ðÖÐÁгöµÄActivity¡£Èç¹ûÄã²»Ö¸¶¨ÈκÎÀà±ð£¬Monkey½«Ñ¡ÔñлÁÐÀà±ðÖÐÁгöµÄActivity£¬Intent.CATEGORY_LAUNCHERºÍIntent.CATEGORY_MONKEY¡£Ö¸¶¨¶à¸öÀà±ðʹÓöà¸ö-c£¬Ã¿¸ö-cÖ¸¶¨Ò»¸öÀà±ð¡£

×¢£º²»³£Óá£

3¡¢--dbg-no-events

×÷ÓãºÉèÖôËÑ¡ÏMonkey½«Ö´ÐгõʼÆô¶¯£¬½øÈëÒ»¸ö²âÊÔActivity£¬²¢²»»áÔÚ½øÒ»²½Éú³Éʼþ¡£ÎªÁ˵õ½×î¼Ñ½á¹û£¬½áºÏ²ÎÊý-v£¬Ò»¸ö»ò¶à¸ö°üµÄÔ¼Êø£¬ÒÔ¼°Ò»¸ö±£³ÖMonkeyÔËÐÐ30Ãë»ò¸ü³¤Ê±¼äµÄ·ÇÁãÖµ£¬´Ó¶øÌṩÁËÒ»¸ö¿ÉÒÔ¼àÊÓÓ¦ÓóÌÐòËùµ÷ÓõİüÖ®¼äת»»µÄ»·¾³¡£

×¢£º²»³£Óá£

4¡¢--hprof

×÷ÓãºÉèÖôËÑ¡Ï½«ÔÚMonkeyÉú³ÉʼþÐòÁÐǰºóÉú³Éprofilling±¨¸æ¡£ÔÚdata/misc·¾¶ÏÂÉú³É´óÎļþ£¨~5Mb£©£¬ËùÒÔҪСÐÄʹÓá£

×¢£º²»³£Óá£

5¡¢--ignore-crashes

×÷ÓãºÍ¨³££¬Ó¦Ó÷¢Éú±ÀÀ£»òÒ쳣ʱMonkey»áÍ£Ö¹ÔËÐС£Èç¹ûÉèÖôËÏMonkey½«¼ÌÐø·¢ËÍʼþ¸øÏµÍ³£¬Ö±µ½Ê¼þ¼ÆÊýÍê³É¡£

×¢£º³£Óá£

6¡¢--ignore-timeouts

×÷ÓãºÍ¨³££¬Ó¦ÓóÌÐò·¢ÉúÈκγ¬Ê±´íÎó£¨Èç¡°Application Not responding¡±¶Ô»°¿ò£©Monkey½«Í£Ö¹ÔËÐУ¬ÉèÖôËÏMonkey½«¼ÌÐø·¢ËÍʼþ¸øÏµÍ³£¬Ö±µ½Ê¼þ¼ÆÊýÍê³É¡£

×¢£º³£Óá£

7¡¢--ignore-security-exception

×÷ÓãºÍ¨³££¬µ±³ÌÐò·¢ÉúÐí¿É´íÎó£¨ÀýÈçÆô¶¯Ò»Ð©ÐèÒªÐí¿ÉµÄActivity£©µ¼ÖµÄÒ쳣ʱ£¬Monkey½«Í£Ö¹ÔËÐС£ÉèÖôËÏMonkey½«¼ÌÐø·¢ËÍʼþ¸øÏµÍ³£¬Ö±µ½Ê¼þ¼ÆÊýÍê³É¡£

×¢£º³£Óá£

8¡¢--kill-process-after-error

×÷ÓãºÍ¨³££¬µ±MonkeyÓÉÓÚÒ»¸ö´íÎó¶øÍ£Ö¹Ê±£¬³ö´íµÄÓ¦ÓóÌÐò½«¼ÌÐø´¦ÓÚÔËÐÐ״̬¡£ÉèÖôËÏ½«»á֪ͨϵͳֹͣ·¢Éú´íÎóµÄ½ø³Ì¡£×¢Ò⣬Õý³££¨³É¹¦£©µÄ½áÊø£¬²¢Ã»ÓÐÍ£Ö¹Æô¶¯µÄ½ø³Ì£¬É豸ֻÊÇÔÚ½áÊøÊ¼þÖ®ºó¼òµ¥µÄ±£³ÖÔÚ×îºóµÄ״̬¡£

9¡¢--monitor-native-crashes

×÷Ó㺼àÊÓ²¢±¨¸æAndoridϵͳÖб¾µØ´úÂëµÄ±ÀÀ£Ê¼þ¡£Èç¹ûÉèÖÃ--kill-process-after-error£¬ÏµÍ³½«Í£Ö¹ÔËÐС£

10¡¢--wait-dbg

×÷ÓãºÍ£Ö¹Ö´ÐÐÖеÄMonkey£¬Ö±µ½Óе÷ÊÔÆ÷ºÍËüÏàÁ¬½Ó¡£

ÑùÀý£º

adb shell monkey -p com.android.settings --throttle 380 -v -v -v -s 3500 300000 > E:\Test\monkey_log.txt

²âÊÔ½á¹û£º

²âÊÔÍê³Éºó¾ùÕýȷʱ»áÏÔʾMonkey finished£º

Events injected: 300
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=2 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time =42700ms (0ms mobile, 0ms wifi, 42700ms not connected)
// Monkey finished

ÓÐbugʱ,»á³öÏÖerror£º

** Monkey aborted due to error.
Events injected: 8530
:Sending rotation degree=0, persist=false
:Dropped: keys=5 pointers=8 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time =1016690ms (0ms mobile, 0ms wifi, 1016690ms not

connected)

2¡¢ MonkeyRunner ²âÊÔ

MonkeyRunner¹¤¾ßÊÇʹÓà Jython (ʹÓÃJava±à³ÌÓïÑÔʵÏÖµÄPython)д³öÀ´µÄ£¬ËüÌṩÁ˶à¸öAPI£¬Í¨¹ýMonkeyRunner API ¿ÉÒÔдһ¸öPythonµÄ³ÌÐòÀ´Ä£Äâ²Ù×÷¿ØÖÆAndroidÉ豸app£¬²âÊÔÆäÎȶ¨ÐÔ²¢Í¨¹ý½ØÆÁ¿ÉÒÔ·½±ãµØ¼Ç¼³öÏÖµÄÎÊÌâ¡£

MonkeyRunnerºÍMonkeyûÓÐÖ±½ÓµÄ¹ØÏµ¡£MonkeyÊÇÔÚÉ豸/Ä£ÄâÆ÷Ö±½ÓÔËÐÐadb shellÃüÁîÉú³ÉÓû§»òÏµÍ³Î±Ëæ»úʼþÁ÷À´½øÐвâÊԵġ£

¶øMonkeyRunnerÔòÔËÐÐÔÚPCÉÏ£¬ÐèҪͨ¹ý·þÎñÆ÷/¿Í»§¶ËµÄµÄģʽÏòÉ豸»òÕßÄ£ÄâÆ÷ÉϵÄandroidÓ¦Ó÷¢ËÍÖ¸ÁîÀ´Ö´ÐвâÊÔ¡£ËüÖ§³Ö×Ô¼º±àд²å¼þ,¿ØÖÆÊ¼þ,ËæÊ±½ØÍ¼,¼ò¶øÑÔÖ®,ÈκÎÄãÔÚÄ£ÄâÆ÷/É豸ÖÐÄܸɵÄÊÂÇé,MonkeyRunner¶¼ÄܸÉ,¶øÇÒ»¹¿ÉÒԼǼºÍ»Ø·Å¡£

1 > MonkeyRunner ÌØÕ÷

1£©MonkeyRunner¹¤¾ßÔÚ¹¤×÷Õ¾ÉÏͨ¹ýAPI¶¨ÒåµÄÌØ¶¨ÃüÁîºÍʼþ¿ØÖÆÉ豸»òÄ£ÄâÆ÷£¨¿É¿Ø£©

2£©¾«È·¿ØÖÆÊ¼þÖ®¼äµÄʼþ

3£©¿ÉÒÔ½øÐУºµã´¥ÆÁ¡¢ÍÏ×§¡¢³¤°´¡¢¼üÅÌʼþ

4£©¿ÉÒÔÖÇÄܽØÍ¼¶Ô±ÈºÍÅжÏ

5£©»ØËݳöÏêϸ¾ßÌåµÄBUG·¾¶

2 > MonkeyRunner ÓÅȱµã

1£© ÄÜÍêȫģÄâÈ˹¤ËùÓвÙ×÷

2£© ÓÐÏêϸµÄAPIÎĵµ²Î¿¼

3£© ¿ÉÒÔд³öÖÇÄÜͼÏñ¶Ô±È½Å±¾

4£© Ö§³Ö java ºÍ Python Á½ÖÖÓïÑԽű¾

5£© ½Å±¾ÒÆÖ²ÐÔ²î

3 > MonkeyRunner²âÊÔÀàÐÍ

1£©¶àÉ豸¿ØÖÆ

MonkeyRunnerAPI¿ÉÒÔ¿ç¶à¸öÉ豸»òÄ£ÄâÆ÷ʵʩ²âÊÔÌ×¼þ¡£Äú¿ÉÒÔÔÚͬһʱ¼ä½ÓÉÏËùÓеÄÉ豸»òÒ»´ÎÆô¶¯È«²¿Ä£ÄâÆ÷£¨»òͳͳһÆð£©£¬ÒÀ¾Ý³ÌÐòÒÀ´ÎÁ¬½Óµ½Ã¿Ò»¸ö£¬È»ºóÔËÐÐÒ»¸ö»ò¶à¸ö²âÊÔ¡£ÄúÒ²¿ÉÒÔÓóÌÐòÆô¶¯Ò»¸öÅäÖúõÄÄ£ÄâÆ÷£¬ÔËÐÐÒ»¸ö»ò¶à¸ö²âÊÔ£¬È»ºó¹Ø±ÕÄ£ÄâÆ÷¡£

2£©¹¦ÄܲâÊÔ

MonkeyRunner¿ÉÒÔΪһ¸öÓ¦ÓÃ×Ô¶¯¹á³¹Ò»´Î¹¦ÄܲâÊÔ¡£ÄúÌṩ°´¼ü»ò´¥ÃþʼþµÄÊäÈëÊýÖµ£¬È»ºó¹Û²ìÊä³ö½á¹ûµÄ½ØÆÁ¡£

3£©»Ø¹é²âÊÔ

MonkeyRunner¿ÉÒÔÔËÐÐij¸öÓ¦Ó㬲¢½«Æä½á¹û½ØÆÁÓë¼È¶¨ÒÑÖªÕýÈ·µÄ½á¹û½ØÆÁÏà±È½Ï£¬ÒԴ˲âÊÔÓ¦ÓõÄÎȶ¨ÐÔ¡£

4£©¿ÉÀ©Õ¹µÄ×Ô¶¯»¯

ÓÉÓÚMonkeyRunnerÊÇÒ»¸öAPI¹¤¾ß°ü£¬Äú¿ÉÒÔ»ùÓÚPythonÄ£¿éºÍ³ÌÐò¿ª·¢Ò»ÕûÌ×ϵͳ£¬ÒÔ´ËÀ´¿ØÖÆAndroidÉ豸¡£³ýÁËʹÓÃMonkeyRunner APIÖ®Í⣬Äú»¹¿ÉÒÔʹÓñê×¼µÄPython osºÍsubprocessÄ£¿éÀ´µ÷ÓÃAndroid Debug BridgeÕâÑùµÄAndroid¹¤¾ß¡£

4 > MonkeyRunner ¹¤¾ß

MonkeyRunner API Ö÷Òª°üÀ¨Èý¸öÄ£¿é

1£©MonkeyRunner:

´ËÀàÌṩÁ¬½ÓÕæ»úºÍÄ£ÄâÆ÷·½·¨waitForConnection (float timeout,stringdeviceid)£¬»¹ÌṩÁË´´½¨Óû§½çÃæÏÔʾÐÅÏ¢µÄalert()·½·¨¡£

2£©MonkeyDevice

´ú±íÒ»¸öÉ豸»òÄ£ÄâÆ÷¡£´ËÀàÌṩÁ˰²×°ºÍÐ¶ÔØ³ÌÐò°ü¡¢¿ªÆôActivity¡¢·¢ËͰ´¼üºÍµã»÷ʼþ¡¢ÔËÐвâÊÔ°üµÈ·½·¨

ÍÏÀ­¿Ø¼þdrag(tuple start,tuple end, floatduration,integer steps) //durationÊÖÊÆ³ÖÐøÊ±¼ä

°´¼üpress(string keycode, dictionary type) //keycode: KEYCODE_HOME,.. type:DOWN ,UP,DOWN_AND_UP...

°²×°Ó¦Óà installPackage(pc¶Ë´æ·Åapk·¾¶)

Æô¶¯Ó¦ÓÃstarActivity (package+'/'+activity)//Ò»¸ö²ÎÊý

µã»÷touch(integer x,integer y, integer type) //type:DOWN,UP,DOWN_AND_UP...

ÊäÈëtype(string message)

½ØÆÁtakeSnapshot()

3£©MonkeyImage

Õâ¸öÀàÌṩÁ˲¶×½ÆÁÄ»µÄ·½·¨¡£

ÔÚ²âÊÔ¹ý³ÌÖÐÓÃÀ´±£´æ²âÊÔ½ØÍ¼£¬½«Î»Í¼±£´æÎª¸÷ÖÖ¸ñʽ£¬²¢¿ÉÒԱȽÏÁ½¸öMonkeyImage¶ÔÏ󣬽«image±£´æµ½ÎļþµÈ¡£

ͼÏñ¶Ô±ÈsameAs (MonkeyImage other,float percent)//¶Ô±ÈµÄÏàËÆ¶È£¬½á¹ûbooleanÀàÐÍ

ͼÏñ±£´æwritetoFile (string path,string format)

5 > MonkeyRunner »·¾³´î½¨

MonkeyrunnerµÄ»·¾³´î½¨£¬ÐèÒª°²×°ÒÔϹ¤¾ß£ºjdk¡¢android sdk¡¢python±àÒëÆ÷¡£

MonkeyRunner »·¾³´î½¨

EclipseÖÐMonkeyRunner»·¾³´î½¨

6 > MonkeyRunner ÔËÐÐ

ÔËÐÐÓÐÁ½ÖÖ·½Ê½

¢Ù ÔÚCMDÃüÁî´°¿ÚÖ±½ÓÔËÐÐmonkeyrunner

¢Ú ʹÓÃPython±àд²âÊÔ´úÂëÎļþ£¬ÔÚCMDÖÐÖ´ÐÐmonkeyrunner xxx.pyÔËÐÐ

²»ÂÛʹÓÃÄÄÖÖ·½Ê½£¬Äú¶¼ÐèÒªµ÷ÓÃSDKĿ¼µÄtools×ÓĿ¼ÏµÄmonkeyrunnerÃüÁî¡£

1£©Ä£ÄâÆ÷Æô¶¯

ÔÚÔËÐÐmonkeyrunner֮ǰ±ØÐëÏÈÔËÐÐÏàÓ¦µÄÄ£ÄâÆ÷»òÁ¬½ÓÕæ»ú£¬·ñÔòmonkeyrunnerÎÞ·¨Á¬½Óµ½É豸

ÔËÐÐÄ£ÄâÆ÷ÓÐÁ½ÖÖ·½·¨£º1¡¢Í¨¹ýeclipseÖÐÖ´ÐÐÄ£ÄâÆ÷ 2¡¢ÔÚCMDÖÐͨ¹ýÃüÁîµ÷ÓÃÄ£ÄâÆ÷

ÕâÀï½éÉÜͨ¹ýÃüÁÔÚCMDÖÐÖ´ÐÐÄ£ÄâÆ÷µÄ·½·¨

emulator -avd AVD_test

ÉÏÃæÃüÁîÖÐ AVD_test ÊÇָģÄâÆ÷µÄÃû³Æ¡£

2£©½»»¥¶Ô»°»·¾³

cmd ÔËÐÐ monkeyrunner ½»»¥ÃüÁî¡°monkeyrunner¡± »ò£º

monkeyrunner -plugin

3£©cmd Öն˵¼ÈëmonkeyrunnerËùҪʹÓõÄÄ£¿é

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

È»ºó±ã¿ÉÒÔ¿ªÊ¼ÀûÓÃmonkeyrunner½øÐвâÊÔÁË¡£

3£© Ä£ÄâÆ÷Á¬½Ó

device= MonkeyRunner.waitForConnection (6,¡¯emulator-5554¡ä)

²ÎÊý1£º³¬Ê±Ê±¼ä£¬µ¥Î»Ã룬¸¡µãÊý£¬Ä¬ÈÏÊÇÎÞÏÞÆÚµØµÈ´ý¡£

²ÎÊý2£ºÖ¸¶¨µÄÉ豸Ãû³Ædevice_id£¬Ä¬ÈÏΪµ±Ç°É豸£¨ÊÖ»úÓÅÏÈ£¬Æä´ÎΪģÄâÆ÷£©

4£© app °²×°

Ä£ÄâÆ÷Æô¶¯³É¹¦ºó£¬°²×°apk

device.installPackage ('F:\\QQyinle_439.apk')

ÆäÖУ¬²ÎÊýΪapkµÄÏà¶Ô·¾¶¡£³É¹¦·µ»Øtrue£¬ÇÒÄ£ÄâÆ÷µÄIDLE½çÃæ¿É¿´µ½°²×°apk ͼ±ê

5£©app Æô¶¯

device.startActivity (component="packageÃû /.activity")

ÈçºÎ»ñȡһ¸öappµÄpackageÃûºÍactivity£¿

ʹÓÃ

#apk·¾¶ÖÐÒ»¶¨²»ÄÜÓпոñ
aapt dump badging F:\QQyinle_439.apk

»ò

aapt dump badging F:\QQyinle_439.apk > F:\log.txt

ËùÒÔ£º

device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")

ÃüÁîÖ´Ðкó£¬Ä£ÄâÆ÷ÉϵÄapp±»Æô¶¯¡£Æô¶¯³É¹¦ºó£¬±ã¿ÉÒÔÏòÄ£ÄâÆ÷·¢ËÍÈç°´¼ü¡¢¹ö¶¯¡¢½ØÍ¼¡¢´æ´¢µÈ²Ù×÷ÁË

6£©

ÎÊÌ⣺CMDÔËÐÐÌáʾmonkeyrunner²»ÊÇÄÚ²¿»òÍⲿÃüÁҲ²»ÊÇ¿ÉÔËÐеijÌÐò»òÅú´¦ÀíÎļþ¡£

½â¾ö£ºµçÄÔ»·¾³±äÁ¿Î´ÅäÖ㬽«monkeyrunnerËùÔÚĿ¼ÅäÔÚ»·¾³±äÁ¿Àï¡£

±äÁ¿Ãû£ºPath

±äÁ¿Öµ£ºD:\android\android -sdk-windows\tools; D:\android\android-sdk -windows\platform-tools

7 > ÑùÀý£¨MonkeyrunnerÔËÐÐpython½Å±¾£©

test.py

#-*-UTF-8-*-
#Èç¹ûµ¼ÈëµÄÄ£¿éÆðÁ˱ðÃû£¬ºóÃæ¾Í±ØÐëʹÓñðÃû
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi

#Á¬½ÓÉ豸»òÐéÄâÆ÷¡£
#²ÎÊý1£¬³¬Ê±Ê±¼ä£¬µ¥Î»Ã룬ĬÈÏÎÞÏÞÆÚµÈ´ý£»²ÎÊý2£¬É豸Ãû³Æ£¬Ä¬Èϵ±Ç°É豸
device=mr.waitForConnection(2,'192.168.56.101:5555')

#ÏòÉ豸»òÄ£ÄâÆ÷°²×°apk,ÒÔÏÂÁ½ÖÖ·½Ê½¶¼ÊǶԵÄ
device.installPackag e('D:\\baiduliulanqi_186.apk')
#device.installPackage ('D:/baiduliulanqi_186.apk')

#Æô¶¯APP
device.startActivity ('cmp=com.baidu.browser.apps/ com.baidu.browser.framework .BdBrowserActivity')
mr.sleep(3)

#µã»÷ËÑË÷¿ò #Ö¸¶¨Î»Ö÷¢ËÍ´¥Ãþʼþ
device.touch(100,100,'DOWN_AND_UP')
mr.sleep(1)

#ÊäÈë²éѯ´Ê
device.type('test')
mr.sleep(1)

#µã»÷»Ø³µ¼ü #·¢ËÍÖ¸¶¨ÀàÐͼüÂëµÄʼþ
device.press('KEYCODE_ENTER','DOWN_AND_UP')
mr.sleep(2)

#½ØÍ¼
result= device.takeSnapshot()

#±£´æµ½Îļþ
result.writeToFile ('./test.png','png')

#Çå³ýËÑË÷¿ò
device.touch (100,100, 'DOWN_AND_UP')
mr.sleep(1)
device.press ('KEYCODE_DEL', 'DOWN_AND_UP')
mr.sleep(2)


#×Ö·û´®·¢Ë͵½¼üÅÌ
#device.type('×Ö·û´®')
device.type('Findyou')

#»½ÐÑÉ豸ÆÁÄ»
#ËøÆÁºó,ÆÁÄ»¹Ø±Õ£¬¿ÉÒÔÓÃÏÂÃüÁÐÑ
device.wake()

#ÖØÆðÊÖ»ú
device.reboot()

#Ä£Ä⻬¶¯
#device.drag(X,Y,D,S)
#X ¿ªÊ¼×ø±ê
#Y ½áÊø×ø±ê
#D Í϶¯³ÖÐøÊ±¼ä(ÒÔÃëΪµ¥Î»)£¬Ä¬ÈÏ1.0Ãë
#S ²åÖµµãʱҪ²ÉÈ¡µÄ²½Ö衣ĬÈÏÖµÊÇ10
device.drag((100,1053),(520,1053),0.1,10)

ÔËÐвâÊԽű¾test.py:monkeyrunner test.py

monkeyrunner Â¼ÖÆºÍ»Ø·Å

Â¼ÖÆ£ºmonkey_recorder.py

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device=mr.waitForConnection()
recorder.start(device)

ÔÚ cmd ÃüÁîÐÐÔËÐÐ monkeyrunner monkey_record.py,»áµ¯³öÒ»¸öMonkeyRecord´°¿Ú½çÃæ¸Ã´°¿ÚµÄ¹¦ÄÜ£º

A. ¿ÉÒÔ×Ô¶¯ÏÔʾÊÖ»úµ±Ç°µÄ½çÃæ

B. ×Ô¶¯Ë¢ÐÂÊÖ»úµÄ×îÐÂ״̬

C. µã»÷ÊÖ»ú½çÃæ¼´¿É¶ÔÊÖ»ú½øÐвÙ×÷£¬Í¬Ê±»á·´Ó¦µ½Õæ»ú£¬¶øÇÒ»áÔÚÓÒ²à²åÈë²Ù×÷½Å±¾

D. wait£º ÓÃÀ´²åÈëÏÂÒ»´Î²Ù×÷µÄʱ¼ä¼ä¸ô£¬µã»÷ºó¼´¿ÉÉèÖÃʱ¼ä£¬µ¥Î»ÊÇÃë

Press a Button£ºÓÃÀ´È·¶¨ÐèÒªµã»÷µÄ°´Å¥£¬°üÀ¨menu¡¢home¡¢search£¬ÒÔ¼°¶Ô°´Å¥µÄpress¡¢down¡¢upÊôÐÔType Something£ºÓÃÀ´ÊäÈëÄÚÈݵ½ÊäÈë¿ò

Fling£ºÓÃÀ´½øÐÐÍ϶¯²Ù×÷£¬¿ÉÒÔÏòÉÏ¡¢Ï¡¢×ó¡¢ÓÒ£¬ÒÔ¼°²Ù×÷µÄ·¶Î§

Export Actions£ºÓÃÀ´µ¼³ö½Å±¾£¬²»ÐèÒªºó׺Ãû£¬Ò²¿ÉÒÔÌí¼Óºó׺Ãû.mr

Refresh Display£ºÓÃÀ´Ë¢ÐÂÊÖ»ú½çÃæ£¬¹À¼ÆÖ»ÓÐÔÚ¶Ï¿ªÊÖ»úºó£¬ÖØÐÂÁ¬½Óʱ²Å»áÓõ½

ÓÃÂ¼ÖÆº¯Êýµ¼³ö²Ù×÷µÄ½Å±¾£¬Í¨¹ýmonkey_playback.pyº¯Êý»Ø·Å֮ǰµÄ²Ù×÷

»Ø·Å£ºmonkey_playback.py,

import sys
from com.android.monkeyrunner import MonkeyRunner as mr

CMD_MAP = {
'TOUCH':lambda dev,arg:dev.touch(**arg),
'DRAG': lambda dev,arg:dev.drag(**arg),
'TYPE': lambda dev,arg:dev.type(**arg),
'PRESS': lambda dev,arg:dev.press(**arg),
'WAIT': lambda dev,arg:mr.sleep(**arg)
}

def process_file(f,device):
for line in f:
(cmd,rest)=line.split('|')
try:
rest = eval(rest)
except:
print 'unable to parse options'
continue
if cmd not in CMD_MAP:
print 'unknown command: ' + cmd
continue
CMD_MAP[cmd](device, rest)
def main():
file = sys.argv[1]
f = open(file,'r')
device = mr.waitForConnection()
process_file(f,device)
f.close()
if __name__ = '__main__'
main()

8 > ÆäËû

#Ð¶ÔØÉ豸»òÄ£ÄâÆ÷ÖеÄAPK £¬²ÎÊýΪAPK°üÃû
device.removePackage ('cn.richinfo.thinkdrive')
print ('Uninstall Success!')

#·¢ËÍÖ¸¶¨ÀàÐÍÖ¸¶¨¼üÂëµÄʼþ
#device.press(²ÎÊý1:¼üÂë,²ÎÊý2:´¥ÃþʼþÀàÐÍ)
#²ÎÊý1£º¼ûandroid.view.KeyEvent
#²ÎÊý2£¬ÈçÓÐTouchPressType()·µ»ØµÄÀàÐÍ£­´¥ÃþʼþÀàÐÍ£¬ÓÐÈýÖÖ¡£
#1¡¢DOWN ·¢ËÍÒ»¸öDOWNʼþ¡£Ö¸¶¨DOWNʼþÀàÐÍ·¢Ë͵½É豸£¬¶ÔÓ¦µÄ°´Ò»¸ö¼ü»ò´¥ÃþÆÁÄ»ÉÏ¡£
#2¡¢UP ·¢ËÍÒ»¸öUPʼþ¡£Ö¸¶¨UPʼþÀàÐÍ·¢Ë͵½É豸£¬¶ÔÓ¦ÊÍ·ÅÒ»¸ö¼ü»ò´ÓÆÁÄ»ÉÏ̧Æð¡£
#3¡¢DOWN_AND_UP ·¢ËÍÒ»¸öDOWNʼþ£¬È»ºóÒ»¸öUPʼþ¡£¶ÔÓ¦ÓÚÊäÈë¼ü»òµã»÷ÆÁÄ»¡£
ÒÔÉÏÈýÖÖʼþ×öΪpress()²ÎÊý»òtouch()²ÎÊý

#°´ÏÂHOME¼ü
device.press('KEYCODE_HOME' , MonkeyDevice.DOWN_AND_UP)
#°´ÏÂBACK¼ü
device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
#°´ÏÂϵ¼º½¼ü
device.press('KEYCODE_DPAD_DOWN', MonkeyDevice.DOWN_AND_UP)
#°´ÏÂÉϵ¼º½¼ü
device.press('KEYCODE_DPAD_UP', MonkeyDevice.DOWN_AND_UP)
#°´ÏÂOK¼ü
device.press('KEYCODE_DPAD_CENTER', MonkeyDevice.DOWN_AND_UP)

KeyCode:

home¼ü KEYCODE_HOME
back¼ü KEYCODE_BACK
send¼ü KEYCODE_CALL
end¼ü KEYCODE_ENDCALL
Éϵ¼º½¼ü KEYCODE_DPAD_UP
ϵ¼º½¼ü KEYCODE_DPAD_DOWN
×󵼺½ KEYCODE_DPAD_LEFT
ÓÒµ¼º½¼ü KEYCODE_DPAD_RIGHT
ok¼ü KEYCODE_DPAD_CENTER
ÉÏÒôÁ¿¼ü KEYCODE_VOLUME_UP
ÏÂÒôÁ¿¼ü KEYCODE_VOLUME_DOWN
power¼ü KEYCODE_POWER
camera¼ü KEYCODE_CAMERA
menu¼ü KEYCODE_MENU

3¡¢Robotium²âÊÔ

Robotium ÊÇÒ»¿î³£ÓõÄÃâ·ÑµÄ Android ×Ô¶¯»¯²âÊÔ¹¤¾ßÈí¼þ£¬ÊÊÓÃÓÚΪ²»Í¬µÄ°²×¿°æ±¾ºÍ×Ó°æ±¾ºÚºÐ²âÊÔ×Ô¶¯»¯¡£Robotium ²âÊÔÊÇÓÃjavaдµÄ¡£ÌṩÁËÄ£Äâ¸÷ÖÖÊÖÊÆ²Ù×÷£¨µã»÷¡¢³¤°´¡¢»¬¶¯µÈ£©¡¢²éÕҺͶÏÑÔ»úÖÆµÄAPI£¬Äܹ»¶Ô¸÷Öֿؼþ½øÐвÙ×÷¡£Robotium ¶Ô Activity£¬Dialog£¬Toast£¬Menu ¶¼ÊÇÖ§³ÖµÄ¡£Èí¼þ¿ª·¢ÈËÔ±¾­³£°ÑËüÃèÊöΪAndroid Selenium¡£ÊÂʵÉÏ£¬RobotiumÊÇÒ»¸öµ¥Ôª²âÊÔ¿â¡£

ΪÁË×Ô¶¯»¯²âÊÔÐèÒªÐ޸ijÌÐòÔ´´úÂë¡£¸Ã¹¤¾ßÒ²²»ÊʺÏÓëϵͳÈí¼þµÄ½»»¥£¬Ëü²»ÄÜËø¶¨ºÍ½âËøÖÇÄÜÊÖ»ú»òƽ°åµçÄÔ¡£Robotium ҲûÓÐÂ¼ÖÆ»Ø·Å¹¦ÄÜ£¬Ò²²»Ìṩ½ØÍ¼¡£

ÏêÇéÇë²Î¿¼£ºRobotium×Ô¶¯»¯²âÊÔ¿ò¼ÜʹÓý̳Ì

4¡¢Ronaorex²âÊÔ

Ranrex ÊÇÒ»¿î²»½ö¿ÉÒÔÖ§³Ö×îÐÂAndroid°æ±¾£¬Ò²Ö§³Ö´ÓAndroid2.2¿ªÊ¼µÄÔçÆÚ°æ±¾ºÍ·ÖÖ§°æ±¾¡£

RanorexµÄÓÅÊÆÊÇËüÓÐÏêϸµÄ½ØÆÁ±¨¸æ¡£ËüÄÜͨ¹ýWifiÁ¬½ÓÖÇÄÜÊÖ»úºÍƽ°åµçÄÔ¡£

Ò»¸ö×Ô¶¯»¯²âÊÔ¹¤³Ìʦͨ¹ýÕâ¸öAndroid¹¤¾ß¿ÉÒÔ²»ÓÃXMLÊý¾Ý¸ñʽÀ´Ïêϸ±àдÊý¾ÝÇý¶¯µÄ²âÊÔ¡£Ranorex¹¤×÷ÊÒʹ×Ô¶¯»¯²âÊÔ¹¤³ÌʦֻҪµã»÷Êó±ê¾Í¿ÉÈÝÒ׵ش´½¨²âÊÔ¡£ËüÔÊÐíÏêϸÉùÃ÷¶îÍâµÄ³ÌÐòÄ£¿é£¬À´ÓÃÓÚÔÚºóÆÚ¿ª·¢ÖÜÆÚÖвâÊÔ¸ü¸´Ôӵij¡¾°¡£

ËüÊÇÒ»¸öÉÌÒµµÄÒÆ¶¯Ó¦Óù¤¾ß£¬ÆäÐí¿É¼Û¸ñΪ1990Å·Ôª¡£²»¹ýRanorexËÑË÷¹¦ÄÜÏ൱Âý£»ËüÐèÒª30ÃëÀ´Íê³ÉÕâÑùµÄ²Ù×÷¡£ÎÒÃDZØÐëΪRanorexÅ䱸apkÎļþÉ豸£¬·ñÔòÎÞ·¨Í¨¹ýÕâ¸ö¹¤¾ßʵÏÖ×Ô¶¯»¯²âÊÔ£¬ÒòΪËüÖ»ÄÜÔÚAPKÎļþÉ豸ÉϹ¤×÷¡£

5¡¢Appium²âÊÔ

ÕâÊÇÒ»¸ö¿ÉÒÔΪiOSºÍAndroid×ö×Ô¶¯»¯²âÊԵĿò¼Ü¡£ËüÊÇÒ»¸ö¿ªÔ´¹¤¾ß¡£ËüÖ§³Ö´Ó2.3¼°ÒÔºóµÄ°²×¿°æ±¾¡£AppiumÀûÓÃWebDriver½Ó¿ÚÔËÐвâÊÔ¡£ËüÖ§³Ö¶àÖÖ±à³ÌÓïÑÔ£¬Èçjava£¬C #£¬RubyºÍÆäËûÔÚWebDriver¿âÖеÄÓïÑÔ¡£

Ëü¿ÉÒÔ¿ØÖÆÒƶ¯É豸ÉϵÄSafariºÍChrome¡£ÕâÑù²âÊÔÒÆ¶¯ÍøÕ¾¿ÉʹÓÃAppiumºÍÕâЩä¯ÀÀÆ÷¡£

µ«Ò»Ð©×Ô¶¯»¯²âÊÔ¹¤³Ìʦ±§Ô¹Ëµ£¬ËüûÓÐÏêϸµÄ±¨¸æ¡£ÆäÈõµã»¹ÓмõÉÙÁËÔÚÒÆ¶¯É豸ÉÏXPathÖ§³Ö¡£

Appium»·¾³´î½¨£¨Windows°æ£©

6¡¢UI Automator ²âÊÔ

Õâ¿î¹¤¾ßÊǹȸ跢²¼µÄ¡£ËüÖ§³Ö´Ó4.1¿ªÊ¼µÄ°²×¿°æ±¾¡£UI AutomatorÄܹ»Óë¸÷ÖÖAndroidÈí¼þ²úÆ·½»»¥£¬°üÀ¨ÏµÍ³ÖеÄÓ¦Óá£ÕâʹUI Automator¿ÉÒÔËø¶¨ºÍ½âËøÖÇÄÜÊÖ»ú»òƽ°åµçÄÔ¡£

ͨ¹ýÕâ¸ö¹¤¾ß´´½¨µÄ½Å±¾¿ÉÒÔÔÚÐí¶à²»Í¬µÄ°²×¿Æ½Ì¨ÉÏÖ´ÐС£Ëü¿ÉÒÔÖØÏÖ¸´ÔÓµÄÓû§²Ù×÷¶¯×÷¡£

UI AutomatorÒ²¿ÉÒÔÀûÓÃÒ»¸öÉ豸µÄÍⲿ°´¼ü£¬Èç»Ø·Å¼ü¡¢ÒôÁ¿µ÷½Ú¼ü¡¢¿ª¹Ø¼üÀ´¿ØÖÆ¡£

Ëü¿ÉÒÔ¼¯³É²âÊÔ¿ò¼ÜTestNG¡£ÔÚÕâÖÖÇé¿öÏ£¬UI Automator¿ÉÒÔÉú³É·á¸»ºÍÏêϸµÄ±¨¸æ£¬ÀàËÆÓÚRanorexÉú³É±¨¸æ¡£ÁíÍ⣬Õâ¸ö¹¤¾ßËÑË÷¹¦Äܷdz£¿ì¡£

Èí¼þ²âÊÔר¼Ò·¢ÏÖUI AutomatorÊÇÒ»¿îÊÊÓÃÓÚÐí¶àAndroidƽ̨µÄÒÆ¶¯Ó¦ÓòâÊÔ¡£ËüÊÇÒ»¿î×îÊʺϰ²×¿Ó¦ÓòâÊԵŤ¾ßÖ®Ò»£¬ÒòΪËüÊÇÓɹȸèרÃÅΪÕâ¸ö²Ù×÷ϵͳ·¢²¼µÄ¡£

ͨ³£Ô¼ÓÐ80%µÄÐÂÈí¼þbugÄÜÔÚËùÓÐÖ§³ÖµÄƽ̨ÉÏÖØÏÖ¡£Òò´Ë£¬Ò»¸ö¿ÉÖ´ÐÐÔڹ㷺ʹÓÃµÄÆ½Ì¨ÉϵÄÒÆ¶¯²âÊÔ¹¤¾ßÊÇ¿ÉÒÔ·¢Ïָߴï80%µÄȱÏÝ¡£ÆäÓà20%½«»áÔÚÆäËûƽ̨Éϱ»·¢ÏÖ¡£ÕâÒâζ×Å£¬ÔÚ´ó¶àÊýÇé¿öÏ£¬ÔÚ¸üÉٵIJâÊÔÆ½Ì¨ÉÏÍêÕûµØ×ö²âÊÔ±ÈÔÚÖÚ¶àÆ½Ì¨ÉÏ´Òæ²âÊÔ¸üºÃ¡£

uiautomatorviewer :Ò»¸öͼÐνçÃæ¹¤¾ßÀ´É¨ÃèºÍ·ÖÎöÓ¦ÓõÄUI¿Ø¼þ¡£

uiautomator :Ò»¸ö²âÊÔµÄJava¿â£¬°üº¬ÁË´´½¨UI²âÊԵĸ÷ÖÖAPIºÍÖ´ÐÐ×Ô¶¯»¯²âÊÔµÄÒýÇæ

7¡¢TestBird ²âÊÔ

TestBird×Ô¶¯»Ø¹é²âÊÔÆ½Ì¨ÎªÊÖÓÎ/APP¿ª·¢ÕßÌṩAPP×Ô¶¯»¯»Ø¹é²âÊÔ£¬¼òµ¥µã»÷×Ô¶¯Éú³ÉͼƬÓÃÀý£»¶ą̀ÊÖ»úͬʱִÐÐÓÃÀý»Ø¹é£»»ùÏ߶Աȣ¬ÕÒ³öÎÊÌ⣻µ÷Õû»ùÏߣ¬Î¬»¤²âÊÔÓÃÀý£»Ò»¼üÉú³É±¨¸æ£¬È«ÃæÌáÉý²âÊÔЧÂʺÍÖÊÁ¿¡£

TestBird×î³õÊÇ´ÓÊÖÓβâÊÔ¿ªÊ¼Æð²½£¬ÔÚÊÖÓÎȦ»ýÀÛÆðºÜ¸ßµÄÖªÃû¶È£¬Ä¿Ç°Ò²ÔÚÖð²½ÏòAPP²âÊÔÁìÓò½ø¾ü£¬Í¬Ê±TestBirdÒ²¼ÓÈëÁËÖÇÄÜÓ²¼þµÄ²âÊÔÁìÓò¡£»ùÓÚÈ«ÇòÊ×´´µÄ¶ÔÏóʶ±ð¼¼Êõ£¬TestBird¿ÉÒÔÉîÈëµ½ÒÆ¶¯App&ÓÎÏ·ÄÚ²¿ËùÓй¦ÄܵÄÉî¶È½âÎöÄÜÁ¦¡£TestBird½¨Á¢ÁËÔÆÊÖ»ú¡¢ÔƲâÊÔºÍÔÆ·ÖÎöÈý´ó²âÊÔÆ½Ì¨£¬Í¨¹ý×ÔÖúApp¹¦ÄܲâÊÔ¡¢Ô¶³ÌÕæ»úµ÷ÊÔ¡¢Õæ»ú¼æÈÝÐÔ²âÊÔ¡¢ÕæÈËÌåÑé²âÊÔ¡¢ ÕæÈËѹÁ¦²âÊԺͱÀÀ£·ÖÎöµÈ£¬ÎªÒƶ¯Ó¦ÓÃÌṩ´ÓÑз¢µ½ÉÏÏßÔÙµ½ÔËÓªµÄһվʽÖÊÁ¿¹ÜÀí·þÎñ¡£

   
3756 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì