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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
СÐÄ£¡×ö UI ×Ô¶¯»¯Ò»¶¨Òª¿ç¹ýÕâЩ¿Ó
 
À´Ô´£ºÌÚÑ¶ÔÆ ·¢²¼ÓÚ£º 2017-10-25
  4073  次浏览      27
 

Ò» ¡¢Òý×Ó

UI×Ô¶¯»¯£¬ÔÚÒÆ¶¯»¥ÁªÍøÊ±´úµÄ½ñÌ죬һֱ¶¼ÊÇÔÚ¸÷´ó²âÊÔÉçÇø×îΪ»ð±¬µÄÒ»¸öTOPIC¡£ÉõÖÁÔÚ²âÊÔͬÐÐÃæÇ°Ò»ÌáÆð×Ô¶¯»¯£¬´ó¼Ò¾Í»á×ÔÈ»¶øÈ»µÄÎÊ£º¡°¶÷£¬ÄãÃÇÊÇÓõÄʲô¿ò¼Ü£¿appium£¿»¹ÊÇrobotium£¿¡±

ÆäʵÔÚ±ÊÕß¿´À´£¬UI×Ô¶¯»¯ÊÇÒ»¸öROI½ÏµÍµÄ²âÊÔÏROI¼´return on investment£¬ÖÐÎÄÒâ˼ÊÇͶ×ʻر¨ÂÊ£©¡£µ«UI×Ô¶¯»¯Ïà±È½Ó¿Ú×Ô¶¯»¯¡¢°×ºÐ²âÊԵȣ¬Ëü¸üÌù½üÊÖ¹¤ÒµÎñ²âÊÔÐÐΪ¡£¶ÔÓÚ¸ÕÆð²½²âÊÔ×óÒÆ¡¢Ð§ÂÊÌáÉýµÄÍŶÓÀ´Ëµ£¬ÊÇ×îѸËÙµÄÇÐÈëµã£¬Ò²Êǹã´óºÚºÐtester£¬ÌáÉý×ÔÉí¼¼ÊõÄÜÁ¦µÄÆðÅÜÏß¡£

±ÊÕß½Ó´¥UI×Ô¶¯»¯Ò»Äê¶à£¬¼æ¹ËÒµÎñ²âÊÔµÄͬʱ¶Ï¶ÏÐøÐøµØÍ¶Èë£¬Ôø¾­ÎÞÊý´ÎµÄÏë·ÅÆú£º

¡°²Å¸ÕдÍêÓÃÀý£¬Ôõô¿ª·¢´ó¸çÓÖ¸ÄÁËUIÁË£¿¡±

¡°Î¬»¤ÕâÐ©ÆÆÓÃÀýµÄʱ¼ä£¬¶¼¹»ÎÒÊÖ¹¤²âÈý±éÁË£¬ÕæµÄÓÐÒâÒåô£¿¡±

¡°²âÊÔ¿ò¼Ü×Ô¼ºÓÐbug£¬ÎÒ¸ÄÓÃÀýҲûÓð¡¡­¡­¡±

¡°ÎÒµ÷ÊÔµÄʱºòÕâ¸öÓÃÀý»¹ÊÇͨµÄ£¬·Åµ½dailyÀïÃæÅܾͲ»Í¨£¬µ½µ×Ôõô»ØÊÂÂ¡±

¡°adbÔõôÕâô²»Îȶ¨°¡£¬ÀÏÊǶϣ¡£¡£¡¡±

¡°ÔõôÅÜ×ÅÅÜמÍcrashÁË£¬µ½µ×ÊDZ»²âÓ¦ÓÃÓÐÎÊÌ⣬»¹ÊDzâÊÔ´úÂëÓÐÎÊÌâ°¡£¿¡±

¡°Ã÷Ã÷½çÃæÉÏÓÐÕâ¸öÔªËØ£¬Ôõô¾ÍÊDz鲻µ½ÄØ£¿¡±

¡°ÕâÆÆÊÖ»ú£¬Äܲ»ÄܱðÀÏÊÇϵͳµ¯¿ò¡­¡­¡±

¡°ÕâÊÖ»úÕæÊÇÔü£¬adb screencap½Ø¸öͼ£¬¾ÓȻҪÈý·ÖÖӲŷµ»Ø£¡¡±

¡°ÕâЩ¿Ø¼þ¶¼Ã»ÓÐid£¬Ã»ÓÐtext£¬²ã¼¶»¹ÈýÌìÁ½Í·¸Ä£¬ÒªÎÒÔõô²é¡­¡­¡±

¡°²éÁËÕâô¶àÂÛ̳£¬Ôõô¾ÍûÓÐÈËÓöµ½¹ýÀàËÆµÄÎÊÌâÄØ£¿¡±

¡­¡­

ÕâЩÎÊÌâÈñÊÕßÒ»¶È»³ÒÉ£¬UI×Ô¶¯»¯Õâ¸öTOPIC£¬ÊDz»ÊǸù±¾Ã»Óã¬Ö»ÊÇtesterΪÁËÕÇн£¬»òÕßΪÁ˰ÚÍÑÖØ¸´ÎÞÁĵÄÊÖ¹¤ÒµÎñ²âÊÔ£¬¶øYY³öÀ´×ÔÎÒÆÛÆ­µÄ¡£

¶þ¡¢ ÎÊÌâ·ÖÀ༰Ŀ±êÃ÷È·

±ÊÕß½«ÒÔÉÏËùÓеÄÎÊÌâ¼òµ¥·Ö³ÉÈýÀࣺÉè¼ÆÀ࣬»·¾³À࣬ϸ½ÚÀà¡£Ò»¸öºÃµÄÉè¼ÆÄ£Ê½£¬Äܹ»±ÜÃâÒ»²¿·ÖÎÊÌ⣻һÌ׺õĻ·¾³£¬¿ÉÒÔÈÃÎÒÃÇ´Ó·¦Î¶µÄά»¤¹¤×÷ÖнâÍÑ£»¾«ÒæÇ󾫵Äϸ½Ú£¬ÈòâÊÔÓÃÀý¸ü¼Ó¿É¿¿Îȶ¨¡£

ͼһ UI×Ô¶¯»¯³£¼ûÎÊÌâ

ÌîµôÕâÈýÀà¿Ó£¬»ù±¾ÉϾͻñµÃÁËÒ»Ì׵ͳɱ¾¸ß²ú³ö¡¢ÉÙÁ¿Î¬»¤¡¢Îȶ¨¿É¿¿µÄUI×Ô¶¯»¯ÓÃÀý¼¯¡£

Èý¡¢ Éè¼ÆÀàÎÊÌâ·ÖÎöÓë½â¾ö

¡°²Å¸ÕдÍêÓÃÀý£¬Ôõô¿ª·¢´ó¸çÓÖ¸ÄÁËUIÁË£¿¡±

¡°²âÊÔ¿ò¼Ü×Ô¼ºÓÐbug£¬ÎÒ¸ÄÓÃÀýҲûÓð¡¡­¡­¡±

ÕâÀàÎÊÌ⣬ÎÒÃÇÐèÒª´Ó¸ùÉÏÖΡ£UI×Ô¶¯»¯¿ª·¢£¬Ò²Ó¦¸ÃÊÇÑϽ÷µÄ¿ª·¢¹¤×÷£¬ËüÒ²ÐèÒªÉè¼ÆÄ£Ê½£¬Ò²ÊÇÄ¥µ¶²»Îó¿³²ñ¹¤¡£ÕâÀïµÄÉè¼Æ£¬Ö÷Òª°üÀ¨Ñ¡¹¤¾ß¡¢¿ò¼Ü·Ö²ãµÈ¡£ºÜ¶àǰ±²¶¼·ÖÎö¹ýUI×Ô¶¯»¯¸÷À๤¾ßµÄÓÅȱµã£¬¶Ô¹¤¾ßÑ¡ÓñÊÕß²»ÔÙ׸Êö¡£Ö÷ÒªÒÀÍÐuiautomatorÀ´½éÉÜϱÊÕßÈÏΪ±È½ÏÇÉÃîµÄÓÃÀý¿ò¼ÜÉè¼Æ¡£

1 ÓÅ»¯²âÊÔ´úÂë¿ò¼Ü

ÎÞÂÛÄãÑ¡Ôñappium¡¢uiautomator¡¢robotium»¹ÊÇespresso£¬¸ÕÈëÃÅʱ£¬¿´µ½µÄsampleÓ¦¸Ã´óÖ¶¼ÊÇÕâÑùµÄ¡£

ͼ¶þuiautomatorºÍespressoÂß¼­ÑùÀý

ÎÊÌâÔÚÄÄÀÕâЩsample¹ýÓÚ¼òµ¥£¬¶¼Ö»½ÌÁËÎÒÃÇUI×Ô¶¯»¯ÈýÔªËØ£ºÔõô²éÕÒÔªËØ¡¢Ôõô²Ù×÷ÔªËØ¡¢ÔõôУÑé½á¹û¡£Èç¹ûÎÒÃǰ´ÕÕ´ó¶àÊý·ÖÏíÌû»òGitHub sampleÀ´Ð´×÷×Ô¼ºµÄcase¡£×îºóÕâÖÖûÓÐÈκÎÉè¼ÆÄ£Ê½µÄ¿ò¼Ü£¬¿Ï¶¨»áÃæÁÙÖØ¹¹¡£ÄÃÉÏÃæµÄespressoÀ´Ëµ£º

  1. ¼ÙÈçaction_saveÕâ¸öid¿ª·¢¸ÄÁË£¬¶øÄãµÄÓÃÀý¼¯ÖУ¬ÓÐ30¸ö²½ÖèÓÃÀýµ½ÁËÕâ¸öid£¬Ò»¸ö¸öÈ¥¸Ä£¬ÊDz»ÊÇÒª·è£¿

  2. ²»ÑáÆä·³µÄÖØ¸´Ð´onView(withXX(xxx)).perform(click())ÕâÒ»³¤´®£¬Äã²»·³£¿

±ÊÕßÊÇÈçºÎ×öµÄ£¿·Ö²ãÉè¼ÆºÍPageObjectsģʽ¡£ÕâÁ½¸ö·½·¨£¬»ù±¾½â¾öÁ˱ÊÕßÓöµ½µÄͼһÖÐËùÓеÄÉè¼ÆÀàÎÊÌâ¡£

ͼÈý ¿ò¼ÜÉè¼Æ½¨Òé

°´ÕÕͼÈý½øÐзֲãÉè¼Æºó£¬µÃµ½ÈçͼËĵIJâÊÔ´úÂë°ü¡£

ͼËÄ ·Ö²ãºóµÄÓÃÀý¿ò¼Ü

PageObjectsģʽ·¢Ô´ÓÚseleniumÉçÇø£¬ËüµÄÄ¿µÄÊǼõÉÙÖØ¸´´úÂ룬µ±¿ª·¢ÐÞ¸ÄUIʱ£¬²âÊÔÖ»ÐèÔÚÓÐÏÞµÄλÖÃÐ޸ĴúÂë¡£Èç¹û´ó¼ÒÏëÉîÈëÁ˽âPageObjects£¬Çë²ÎÕÕÈçÏÂwiki:

https://github.com/SeleniumHQ/selenium/wiki/PageObjects

http://blog.csdn.net/kittyboy0001/article/details/25219053

ÎÒÃÇÀ´¿´Ò»Ï£¬ÏÖÔÚÊÖ¹ÜÊ×Ò³Page°üÖеĴúÂëºÍÒ³Ãæ¡£

ͼÎå ÊÖ¹ÜÊ×Ò³Page²ã²¿·Ö´úÂë

»ØÒäÒ»ÏÂÉÏÃæµÄgoogleÌṩµÄsample£¬ÔÙ¶Ô±ÈÒýÈë·Ö²ãÉè¼ÆºÍPOģʽǰºóµÄ´úÂ룬µã»÷ͼÎåÖеÄÒ»¼ü¼ÓËÙ£º

ͼÁù ÒýÈëPOǰºó´úÂë¶Ô±È

´øÀ´µÄºÃ´¦£¬µ±È»²»½ö½öÊÇÒµÎñÓÃÀý´úÂë¸üÇåˬ¡£

  1. ͨ¹ý½«²éÕҺͲÙ×÷·â×°µ½»ù´¡²ãÖУ¬Õⲿ·Ö´úÂë¾Í¾ßÌåÒµÎñÎÞ¹ØÁË£¬¼´Ê¹Äõ½ÆäËû²úÆ·ÖÐÒ²¿ÉÒÔ¸´Óã»

  2. ͨ¹ýpage²ãµÄ·ÖÀ룬ËùÓеÄÓëÒµÎñÏà¹ØµÄid£¬textµÈ¶¼±»ÏÞ¶¨ÔÚÁËpage°üÖУ¬ÄÄÅ¿ª·¢¸ÄÁËUI£¬ÐÞ¸Äpage°üÌØ¶¨µÄÒ³ÃæÖжÔÓ¦µÄÔªËØ¾ÍºÃÁË¡£

  3. ¶Ôpage°ü½øÐкÏÀíµÄÒµÎñ²ð·Ö£¬±ÈÈ罫ÊÖ¹Ü·Ö³É MainPage(Ö÷Ò³)£¬SoftwareManagerPage(Èí¼þ¹ÜÀíÒ³)£¬WiFiManagerPage£¨WiFi¹ÜÀíÒ³£©µÈ£¬ÔÚ¿ª·¢¸ÄÁËij¸ö¾ßÌåÒµÎñµÄ½çÃæºó£¬²âÊÔÄܹ»Ñ¸ËÙÖªµÀ²âÊÔ´úÂëÐèÒª¸ÄÄÄÀï¡£

2 ¼æÈÝ×ÊÔ´»ìÏýµÄ²âÊÔ´úÂë

³ýÁËÕû¸ö¿ò¼ÜµÄÉè¼Æ£¬ÓÐʱºòһЩСÎÊÌâÒ²¿ÉÒÔ¾­¹ýÇÉÃîÉè¼Æ¡£±ÈÈç×ÊÔ´»ìÏýµÄÎÊÌâ¡£

ͼÆß ×ÊÔ´»ìÏý

ÈçͼÆß£¬ÔÚÊÖ»ú¹Ü¼ÒµÄ·¢²¼°üÖУ¬ÓÃuiautomatorviewer dumpÏÂÀ´·¢ÏÖ£¬Ò»¼üÓÅ»¯µÄbutton£¬Æäresource-idÊÇo3£¬µ«Æäʵ¿ª·¢codingʱ£¬¶¨ÒåµÄidÏÔÈ»²»»áÓÃÕâÖÖûÓÐÈκÎ×ÖÃæÒâÒåµÄ´úºÅ£¬ËüÔÚ»ìÏý֮ǰ½Ðoptimize_button¡£

´¿ºÚºÐµÄUI×Ô¶¯»¯£¬Ò²ÐíÄã»áÞðÆúoptimize_button£¬Ö±½Óдo3£¬µ«ÕâÑùÏÔÈ»²»¹»¿ÆÑ§£¬¼È´øÀ´ÁËÑÏÖØµÄ´úÂë¿É¶ÁÐÔÎÊÌ⣬ͬʱһµ©°æ±¾µü´ú£¬»ìÏý±äÁË£¬o3Ò²Ðí¾Í±ä³ÉÁËo4¡£»òÕßÄã»áÈÿª·¢¸øÄã²âÊԵİü£¬²»Òª»ìÏý£¬µ«Èç¹ûÏëÓÃUI×Ô¶¯»¯²âÊÔÒÑ·¢²¼µÄapkÄØ£¿

=½â¾ö¸ÃÎÊÌ⣬ҲµÃ´ÓPageObjects˵Æð¡£»Øµ½Í¼ÎåÖÐOPTIMIZE_BTNµÄ¶¨Ò壬Õâ¸ö¾²Ì¬±äÁ¿²¢Î´ÔÚpageÖгõʼ»¯£¬Ö»ÓÐÒ»¸ö@FindByµÄ×¢½â¡£Æäʵ£¬ÔÚ¿ò¼Ü²ãÇý¶¯²âÊÔ¿ªÊ¼Ç°£¬¿ò¼Ü»áÏȵ÷ÓÃÈçÏÂͼ°ËËùʾµÄsetAllFieldÀ´³õʼ»¯ËùÓеÄpageÒ³Ãæ¡£

  1. Èç¹û±»²âÓ¦ÓÃδ»ìÏý×ÊÔ´£¬¸Ã·½·¨Ö»Êǽ«@FindByÖеÄÖµ¸³Öµ¸øField¡£

  2. Èç¹û±»²âÓ¦ÓÃÒÑ»ìÏý×ÊÔ´£¬¸Ã·½·¨Ôò»á´ÓmObfuscationMap£¨Î´Ìù³öÈ«²¿´úÂ룬ʵ¼ÊÊǽâÎöÒ»¸ö¿ª·¢ÌṩµÄ»ìÏý±í£¬ÒÔԭʼidΪkey£¬»ìÏýidΪvalueµÄHashMap£©ÖжÁ³ö¶ÔÓ¦µÄid¶ÔÓ¦¹ØÏµ£¬½«»ìÏýºóµÄid¸³Öµ¸øField¡£

ͼ°Ë Page²ã¶¯Ì¬³õʼ»¯

ËÄ¡¢»·¾³ÀàÎÊÌâ·ÖÎöÓë½â¾ö

¡°adbÔõôÕâô²»Îȶ¨°¡£¬ÀÏÊǶϣ¡£¡£¡¡±

¡°Ã÷Ã÷½çÃæÉÏÓÐÕâ¸öÔªËØ£¬Ôõô¾ÍÊDz鲻µ½ÄØ£¿¡±

¡°ÕâÆÆÊÖ»ú£¬Äܲ»ÄܱðÀÏÊÇϵͳµ¯¿ò¡­¡­¡±

¡°ÕâÊÖ»úÕæÊÇÔü£¬adb screencap½Ø¸öͼ£¬¾ÓȻҪÈý·ÖÖӲŷµ»Ø£¡¡±¡­¡­

Òý×ÓÖÐÌáµ½µÄÕâЩÎÊÌ⣬¸ù¾Ý¾­Ñ飬¶à°ëÄãµÄ»·¾³Ö´Ðл·¾³»¹²»¹»Îȶ¨¡£

1 ADBÏà¹ØÎÊÌâ

ÒÑÖªµÄADB²»Îȶ¨Ô­ÒòÈ磺µçѹ²»ÎÈ£¬¸÷ÀàÊÖ»úÖúÊֵĸÉÈÅ£¬ÏµÍ³°æ±¾ÓëADB°æ±¾²»Æ¥Åä¡¢ADBcrashµÈµÈ¡£Èç¹ûÎÒÃÇÓ­ÄѶøÉÏ£¬È¥ÖØÐ´ADB£¬Í¶È뽫ÎÞÏÞÀ©´ó¡£ËùÒÔ½¨ÒéÖ÷ÒªµÄ½â¾ö·½°¸£¬»¹ÊǾ¡Á¿¹æ±Ü¡£

a) Ñ¡Óÿɿ¿Ó²¼þ¹æ±Üµçѹ²»Îȶ¨£¬githubÉϵÄSTFÏîÄ¿×éÓйý³ÉÊìµÄ¾­Ñ飬ѡÓÃÐÔÄܸüÓŵÄUSB·Ö½ÓÆ÷£¬µçѹºÍ¿É¿¿ÐÔ»áÓиüÎȶ¨µÄ±íÏÖ¡££¨¸½ÉÏÁ´½Ó£¬wiki Recommended hardwareÒ»½ÚÖÐÓв»Í¬Ó²¼þÏêϸµÄÐÔÄܶԱȣ¬https://github.com/openstf/stf£©

b) ÆÁ±Î¸÷ÀàÊÖ»úÖúÊֵĸÉÈÅ¡£91ÖúÊÖ¡¢Íã¶¹¼ÔµÈ£¬»ù±¾¶¼ÔÚadbÉÏ×öÁ˶þ´Î¿ª·¢£¬ËüÃÇ»áÓëÔ­Éúadb¼äÓмæÈÝÐÔÎÊÌâ¡£½¨ÒéÖ±½ÓʹÓÃLinux/MACϵͳ×÷ΪÔËÐл·¾³ÒÔÆÁ±ÎÕâÀà¸ÉÈÅ¡£

c) ½µµÍÓÃÀýÔÚÖ´Ðйý³ÌÖжԻ·¾³µÄÒÀÀµ¡£AppiumÕâÀà×Ô¶¯»¯¹¤¾ß£¬Ã¿Ò»¸ö²âÊÔ²½Öè¶¼ÐèÒªPC¶ËµÄappium serverºÍ²âÊÔÊÖ»ú¶ËµÄbootstrap½»»¥ÏûÏ¢¡£²âÊÔ¹ý³ÌÖÐÖ»ÒªUSBÁ¬½Ó²»Îȶ¨£¬¶¼»áµ¼ÖÂÕû¸ö²âÊÔÌ×µÄʧ°Ü¡£ËùÒÔ±ÊÕßÈÏΪ£¬Ê¹ÓøüÔ­ÉúµÄuiautomator»áÊǸüºÃµÄÑ¡Ôñ£»Í¬Ê±£¬²âÊÔ¹ý³ÌÖеÄÈÕÖ¾¡¢½ØÍ¼µÈ£¬Ò²¾¡Á¿ÔÚ²âÊÔÊÖ»úÉÏ×ö³Ö¾Ã»¯¡£

2 µ¯¿òÎÊÌâµÄ½â¾ö

ȨÏÞµ¯¿ò£¬ÊÇÊÖ¹ÜUI×Ô¶¯»¯ÖеÄÒ»¸ö´ó¿Ó¡£ÈçÏÂͼ£¬ÊDzâÊÔÊֹܹý³ÌÖУ¬ÔÚ»ªÎªÊÖ»úÉÏÓöµ½µÄ²¿·ÖȨÏÞµ¯¿ò¡£ÕâЩµ¯¿ò£¬²¢²»»áÓÃÀýÿ´ÎÖ´Ðж¼µ¯³ö£¬²»Í¬³§É̵ĵ¯³ö¿òÒ²²»Ò»Ö¡£ÏÔÈ»µã»÷µ¯¿òµÄÂß¼­£¬Ð´ÔÚcaseÂß¼­ÖУ¬Ö»»áµ¼ÖÂ×Ô¶¯»¯±äµÃ¸ü¸´ÔÓ¸ü²»Îȶ¨¡£

ͼ¾Å ¸÷ÀàȨÏÞµ¯¿ò

uiautomatorµÄwatcher£¬Äܹ»ÍêȫʵÏÖµã»÷µ¯¿òºÍÓÃÀýÂß¼­µÄ½âñî¡£µ±Ç°±ÊÕßµÄʵÏÖÂß¼­ÊÇ£¬¼àÌýµ¯¿òÉϵÄij¸ö¿Ø¼þ£¬µ±¸Ã¿Ø¼þ³öÏÖʱ£¬Ö´ÐÐactionÀ´µã»÷µôÆäÖеÄÈ¡Ïû»òÈ·¶¨°´Å¥¡£ÕâÑù£¬ÓÃÀý¾ÍÖ»Ðè¹Ø×¢ÒµÎñÂß¼­£¬¶øÈκÎʱºòµÄµ¯¿ò£¬¶¼ÓÉwatcherÀ´×Ô¶¯µã»÷¡£ÈçÏÂͼÖУ¬checkForCondition¹Ø×¢Ìõ¼þ£¬actionÊDzÙ×÷¡£

ͼʮ²éÕÒÐÍWatcher

½«ËùÓеÄwatcher·Ö²»Í¬µÄÊÖ»ú³§É̽øÐÐ×¢²áºó£¬ÔÙµ÷ÓÃrunWatchers()£¬È»ºóÔÙÖ´ÐÐÓÃÀý¡£¸Ã·½·¨¿ÉÒÔÔÚ@BeforeClassÖлòÕßRunListenerµÄtestRunStartedÖе÷Óᣵ±È»£¬Èç¹ûij¸öÓÃÀý²»Ïëij¸ö¾ßÌåµÄµ¯¿ò±»watcherµã»÷µô£¬Ò²¿ÉÒÔµ÷ÓÃremoveWatcher()·´×¢²á¡£

ͼʮһ ×¢²á¼àÌýÆ÷

Watcher²¢²»Äܽâ¾öËùÓеĵ¯¿òÎÊÌâ¡£ÀýÈ磬ÔÚ¿ªÆôWiFiµÄ³¡¾°ÖУ¬ÓÉÓÚWifiManagerµÄsetWifiEnabledºÍUIÉϵĵ¯¿òµã»÷ÊÇͬ²½µÄ£¨Òâ˼Êǵ÷ÓÃÁËsetWifiEnabledÖ®ºó£¬Èç¹û½çÃæÉϲ»µãÔÊÐí£¬¸Ã·½·¨ÊDz»»á·µ»ØµÄ£©£¬Ê¹ÓÃÉÏÃæµÄwatcher·½Ê½²¢²»»áµã»÷WiFiȨÏÞÉêÇëµÄÔÊÐí¡£Õâʱ£¬¾ÍÐèÒªÓõ½Ï̷߳½Ê½À´½â¾ö£¨ÈçÏÂͼʮ¶þ£©£¬µ÷ÓÃsetWifiEnabledǰ£¬ÏÈÆô¶¯Ò»¸öÏ̵߳ȴýµ¯¿òµ¯³ö¡£

ͼʮ¶þ ¶àÏ̷߳½Ê½µãµôµ¯¿ò

Î塢ϸ½ÚÀàÎÊÌâ·ÖÎöÓë½â¾ö

¡°ÎÒµ÷ÊÔµÄʱºòÕâ¸öÓÃÀý»¹ÊÇͨµÄ£¬·Åµ½dailyÀïÃæÅܾͲ»Í¨£¬µ½µ×Ôõô»ØÊÂÂ¡±

³öÏÖÉÏÊöÎÊÌ⣬¶à°ëÊÇÒòΪÎÒÃǵÄÓÃÀýϸ½Ú²»¹»ÑϽ÷¡£ÕâÀàÎÊÌ⣬ÍùÍù¾ö¶¨×ÅÎÒÃÇ×Ô¶¯»¯ÓÃÀý¼¯£¬ÊDz»ÊÇÄÜ´Ó90%µÄcaseͨ¹ýÂÊ£¬ÌáÉýµ½100%¡£

1 ˳ÐòÂß¼­µÄÓÃÀý

×Ô¶¯»¯Ïà±ÈÊÖ¹¤£¬ËüÖ»»á¹Ø×¢code¸æËßËüµÄÑéÖ¤µã£¬ËùÒÔÑ¡ÔñÂß¼­ÔÚÓÃÀýÖÐÓ¦¸ÃÊǽûÓõġ£ÈçÏÂͼʮÈýÖÐÓÒ²àµÄcase£¬Èç¹ûÓÃÀýÖ´Ðе½ifÖУ¬Ò²ÐíelseÁ÷³ÌÖдæÔÚBUG£¬·´Ö®ÒàÈ»¡£´Ëʱ¿¼ÂDzð·ÖÓÃÀý£¬×ó²à²ÅÊÇÀíÏëµÄÓÃÀýÂß¼­¡£

ͼʮÈýÓÃÀýÂß¼­

ÁíÍ⣬д×÷caseʱ£¬Ò»¶¨ÒªÀμǣ¬Ö»ÓÐÎÒÃǸæÖª³ÌÐòÒªassert£¬Ëü²Å»áÈ¥assert¡£²éÕÒ£¬²Ù×÷£¬¶ÏÑÔ£¬UI×Ô¶¯»¯ÈýÒªËØÈ±Ò»²»¿É¡£

2 ½âñîµÄÓÃÀý

ÔÚtestngÖУ¬»áÌṩdependsOnMethods×¢½â£¬ËƺõÔÚ¹ÄÀøÐ´×÷ÓÃÀýʱ£¬Ê¹ÓÃÓÃÀý¼äÒÀÀµ¡£µ«±ÊÕßÈÏΪ£¬ÓÃÀý¼äµÄÒÀÀµ£¬»á´øÀ´²»±ØÒªµÄά»¤³É±¾¡£Ö»Óи߶ȽâñîµÄÓÃÀýÂß¼­£¬²ÅÄܹ»¸ü¼Ó½¡×³µÄÖ§³ÅÓÃÀýÖ´ÐÐ˳Ðòµ÷Õû¡¢ÓÃÀýÔöɾ¡¢³öÏÖÒì³£³¡¾°ºó£¬AÓÃÀýʧ°Ü²»»áµ¼ÖÂBÓÃÀýҲʧ°Ü¡£

3 ÓÅ»¯µÈ´ý

ÓÐʱºò»áÓöµ½ÒÔϳ¡¾°£¬ËäȻԭÉúµÄ×Ô¶¯»¯¹¤¾ßÌṩÁ˵ȴýÔªËØ¿É¼ûµÄ·½·¨£¬µ«Ê¹ÓÃÆðÀ´£¬»¹ÊÇÎÞ·¨ÕæÕýµÈµ½ÔªËؿɼû¡£Õë¶ÔÕâ¸öÎÊÌ⣬ÈçÏÂͼµÄwaitCondition·½·¨ÊÇÒ»¸ö²»´íµÄ·½°¸£¬ËüÏà¶ÔÓÚthread.sleepÀ´Ëµ£¬¸ü½Úʡʱ¼ä¡£

ͼʮËÄ·´¸´µÈ´ý·½·¨

4 ²»Óþø¶Ô×ø±êµã»÷

¾ø¶Ô×ø±êµã»÷£¬ÔÚ²»Í¬³ß´çÆÁÄ»ÉÏÎÞ·¨¼æÈÝ¡£

µÚÒ»·½°¸Ó¦¸ÃÊÇ£¬Íƶ¯¿ª·¢¶ÔÐèÒªÓõ½µÄ¿Ø¼þÌí¼ÓID»òAccessibility¡£µ«¸ù¾Ý¾­Ñ黹ÊÇ»áÓÐһЩ³¡¾°ÐèÒªÓõ½×ø±êµã»÷£º

1£¬ ¿¼ÂÇͶÈë²ú³ö±È£¬ÎªËùÓпؼþÌí¼ÓidµÄ³É±¾¹ý¸ß£»

2£¬ ¶¯Ì¬²¼¾ÖÌí¼ÓµÄID¶¼Ò»Ñù£»

3£¬ ´æÔÚ·Çxml²¼¾ÖµÄ½çÃæ£¨´úÂëÖÐÖ±½Ó²¼¾Ö£©¡£

Õâʱ£¬±ÊÕßÒÀÈ»²»½¨ÒémDevice.click(100,200)ÕâÑùµÄ×ø±êµã»÷¡£ÓÐÒÔÏÂÁ½ÖÖÖµµÃÒ»ÊԵķ½°¸¡£

a) ÕÒµ½ÏàÁڿؼþ×ø±ê£¬¼ÆË㵱ǰ¿Ø¼þµÄ¾ø¶Ô×ø±ê¡£ÈçÏÂͼʮËÄ£¬uiautomatorviewerÖеã»÷ÓÒÉϽǾ¯¸æÐ¡Èý½Ç£¬»áµÃµ½ÓÐÒ»Ð©ÔªËØ£¨»ÆÉ«¿Ø¼þ£©£¬ÊÇ¿ÉÄÜÎÞ·¨ÕÒµ½µÄ¡£¶øÊ¹ÓÃÏà¶Ô×ø±ê¾ÍÊÇ˵£¬ÎÒÃÇ¿ÉÒÔ»ñÈ¡ËüÏàÁڿؼþµÄ×ø±ê£¬È»ºó¼õÈ¥»ò¼ÓÉÏÒ»¸ö±È½ÏСµÄpxÖµ£¬ÔÙµã»÷¼ÆËãºóµÄ×ø±ê¼´¿É¡£

ͼʮÎå Ïà¶Ô×ø±ê

b) ʹÓÃÆÁÄ»³ß´ç¼ÆËãÏà¶ÔλÖá£ÔÚ²âÊÔ¿ªÊ¼£¬½«ÆÁÄ»³ß´ç´æÏÂÀ´£¬Ê¹Óðٷֱȵķ½Ê½¼ÆËãµÃµ½ÐèÒªµã»÷µÄλÖá£ÈçÏ£¬µã»÷¡¾50%¿í¶È£¬80%¸ß¶È¡¿µÄλÖá£

Áù¡¢×ܽá

UI×Ô¶¯»¯²âÊÔÊÇÒ»ÃÅѧÆðÀ´ºÜ¼òµ¥£¬ÓÃÆðÀ´ºÜÂé·³µÄ²âÊÔ¼¼Êõ¡£

ÏëÒªÈëÃÅ£¬Á½ÖܾͿÉÒÔÁ˽âÇå³þuiautomator»òespressoÕâÀ๤¾ß¡£UI×Ô¶¯»¯£¬Î޷ǾÍÊDzéÕÒÔªËØ¡¢²Ù×÷ÔªËØ»òÉ豸¡¢ÑéÖ¤½á¹û¡£ÕâÈý¸ö²½ÖèÑ­»·¶à´Î£¬¾ÍÊÇÒ»¸öÓÃÀý¡£

µ«ÒªÓú㬲¢²ú³öÄÜЧ£¬ÐèÒª×ߵķÆäʵºÜ³¤¡£ÓÉÓÚÆª·ùÏÞÖÆºÍ֪ʶÓÐÏÞ£¬ÕâÀï²»¿ÉÄܰÑËùÓеÄÎÊÌâÒ»Ò»Áгö¡£¶ÔÓÚËùÓÐÕâЩÎÊÌ⣬ÎÞ·ÇÁ½¸ö˼·£ºÒ»ÊÇÈÆ¹ý£¬¶þÊǽâ¾ö¡£

  1. ѡһ¸ö¾¡Á¿¼ò»¯£¬¾¡Á¿µ×²ãµÄ¹¤¾ß£¨uiautomator»òespresso£©,´Ó¸ùÉÏÈÆ¹ýһЩ¹¤¾ß»á´æÔÚµÄÎÊÌ⣻

  2. ²ÉÓÃÁ¼ºÃµÄÉè¼ÆÄ£Ê½£¬ÈÃ×Ô¼ºµÄ¿ò¼Ü¸üÎȶ¨£¬ÉúÃüÖÜÆÚ¸ü³¤£¬Î¬»¤³É±¾¸üµÍ£»

  3. Ã÷ÖªµÀ»áºÄ·ÑºÜ¶àʱ¼ä¾«Á¦£¬ÊÕЧȴºÜСµÄ»·¾³ÎÊÌ⣬¾¡Á¿Èƹý£»

  4. ÓÅ»¯ÓÃÀýÂß¼­ºÍϸ½Ú£¬Ê¹Ö®Îȶ¨¿É¿¿£¬¸üÄÜ˵·þ±ðÈËÏàÐÅ×Ô¶¯»¯µÄ²âÊÔ½áÂÛ¡£

×îºó£¬×£Ô¸´ó¼ÒÔÚUI×Ô¶¯»¯µÄµÀ·ÉÏÔ½×ßԽ˳£¡

   
4073 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù