¸üÐÂʱ¼ä:2018Äê03ÔÂ30ÈÕ16ʱ24·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
Ò» APPIUM½éÉÜ
1 ²âÊÔ¶ÔÏó
appium ÊÇÒ»¸ö×Ô¶¯»¯²âÊÔ¿ªÔ´¹¤¾ß£¬Ö§³ÖiOSºÍ Androidƽ̨ÉϵÄÔÉúÓ¦Óã¬webÓ¦ÓúͻìºÏÓ¦Óá£
¡ñ ÒÆ¶¯ÔÉúÓ¦Ó㺵¥´¿ÓÃios»òÕßandroid¿ª·¢ÓïÑÔ±àдµÄ¡¢Õë¶Ô¾ßÌåijÀàÒÆ¶¯É豸¡¢¿ÉÖ±½Ó±»°²×°µ½É豸ÀïµÄÓ¦Óã¬Ò»°ã¿Éͨ¹ýÓ¦ÓÃÉ̵ê»ñÈ¡£¬±ÈÈçij¸öÓÎÏ·app;
¡ñ ÒÆ¶¯webÓ¦ÓãºÊ¹ÓÃÒÆ¶¯ä¯ÀÀÆ÷·ÃÎʵÄÓ¦ÓÃ(appiumÖ§³ÖiOSÉϵÄSafariºÍAndroidÉ쵀 Chrome)£¬²»ÐèÒªÏÂÔØµ½É豸ÉÏ£¬¶øÊÇͨ¹ýä¯ÀÀÆ÷Ö±½Ó·ÃÎÊ£¬±ÈÈçH5¾ÅÇú·âÉñÓÎÏ·;
¡ñ »ìºÏÓ¦ÓãºÍ¬Ê±Ê¹ÓÃÍøÒ³ÓïÑÔÓë³ÌÐòÓïÑÔ¿ª·¢£¬Í¨¹ýÓ¦ÓÃÉ̵êÇø·ÖÒÆ¶¯²Ù×÷ϵͳ·Ö·¢£¬Óû§ÐèÒª°²×°Ê¹ÓõÄÒÆ¶¯Ó¦Ó㬱ÈÈçÊÖ»úÉϵÄÌÔ±¦¿Í»§¶Ë¡£
2 Ö§³Öƽ̨¼°ÓïÑÔ
appiumÊÇ¿çÆ½Ì¨µÄ£¬Ö§³ÖOSX£¬WindowsÒÔ¼°Linuxϵͳ¡£ËüÔÊÐí²âÊÔÈËÔ±ÔÚ²»Í¬µÄƽ̨(iOS£¬Android)ʹÓÃͬһÌ×APIÀ´Ð´×Ô¶¯»¯²âÊԽű¾£¬ÕâÑù´ó´óÔö¼ÓÁËiOSºÍAndroid²âÊÔÌ×¼þ¼ä´úÂëµÄ¸´ÓÃÐÔ¡£
¡ñ appiumÖ§³Ö¶àÓïÑÔ£¬²ÉÓÃC/SÉè¼ÆÄ£Ê½£¬Ö»ÒªÂú×ãclientÄܹ»·¢ËÍhttpÇëÇó¸øserver¼´¿É
3 ¹¤×÷ÔÀí

ÈçͼËùʾ£¬appiumÖ÷Òª·ÖΪÈý¸öµã£ºclient¶Ë£¬server¶Ë£¬¼°²âÊÔÒÆ¶¯É豸
¡ñ client¶Ë£ºÓø÷ÀàÓïÑÔдµÄ²âÊԽű¾
¡ñ server¶Ë£ºÎÒÃǰ²×°appium¹¤¾ßµÄÄDz¿·Ö£¬×¨ÃÅÓÃÀ´¼àÌý²¢½ÓÊÕÀ´×Ôclient¶ËµÄÇëÇó£¬×ª·¢ÇëÇ󲢿ØÖÆÒƶ¯É豸ִÐвâÊÔ£¬Ä¬ÈÏ¿ªÆô²¢¼àÌý4723½Ó¿Ú
¡ñ ÒÆ¶¯É豸£ºÖ§³ÖÈýÀàÉ豸£¬ÎÒÃǵÄ×îÖÕÄ¿µÄ£ºÔÚÉ豸ÉÏ×Ô¶¯Ö´ÐÐÖ¸¶¨µÄ²Ù×÷
Õû¸ö¹ý³Ì£º
µÚÒ»£¬ÔÚij̨·þÎñÆ÷Éϰ²×°appium¹¤¾ß(server¶Ë)£¬¿ªÆô½ø³Ì(ĬÈÏ4723½Ó¿Ú)½øÐмàÌý;
µÚ¶þ£¬±àд²âÊԽű¾£¬·ÅÖõ½·þÎñÆ÷ÉÏ£¬Ö´ÐиòâÊԽű¾(Ï൱ÓÚ·¢ËÍÃüÁî¸øserver¶Ë)
µÚÈý£¬Òƶ¯É豸½ÓÊÕµ½server¶Ë·¢Ë͹ýÀ´µÄÃüÁִÐÐÖ¸¶¨µÄ²Ù×÷
4 °²×°¹¤¾ß
¡ñ ²âÊÔÓïÑÔ£¬Èçpython
¡ñ appium¿Í»§¶Ë
¡ñ appium·þÎñ¶Ë
¡ñ ÒÆ¶¯É豸£¬ÈôʹÓÃÐéÄâ»úÔòÐè½øÐа²×°
¶þ »·¾³´î½¨
1 °²×°Android SDK
Android SDK(Software Development Kit£¬Èí¼þ¿ª·¢¹¤¾ß°ü)ÌṩÁË Android API ¿âºÍ¿ª·¢¹¤¾ß¹¹½¨£¬²âÊԺ͵÷ÊÔÓ¦ÓóÌÐò£¬¿ÉÒÔ¿´×öÓÃÓÚ¿ª·¢ºÍÔËÐÐAndroidÓ¦ÓõÄÒ»¸öÈí¼þ
ÌṩС¹¤¾ß£¬±ÈÈçadb¡¢aapt¡¢uiautomatorview
²âÊÔÉ豸ʹÓð²×¿Ä£ÄâÆ÷
2 °²×°Appium Server
ÏÂÔØµØÖ·£ºhttps://github.com/appium/appium-desktop/releases
ÏÂÔØappium°²×°°ü
°²×°£¬²¢ÅäÖÃappium»·¾³±äÁ¿
3 °²×°python-client
ÏȰ²×°±à³ÌÓïÑÔ£¬±ÈÈçpythonÓïÑÔ
°²×°Appium-Client£¬pythonµÄ»°¿ÉʹÓÃpip°²×°£º
pip install Appium-Python-Client
Èý Ó¦Óü°²Ù×÷
1 µ÷ÓÃAppium¹ý³Ì
ÅäÖÃÊÖ»úÉ豸²ÎÊý£¬¸æËßserver¶ËÏëµ÷ÆðÄÄһ̨ÊÖ»úÉ豸
³£¼û²ÎÊý½âÊÍ£º
¡ñ deviceName£ºÖ¸¶¨Æô¶¯É豸£¬±ÈÈçAndroid Emulator¡¢iPhone SimulatorµÈ
¡ñ automationName£ºÖ¸¶¨×Ô¶¯»¯ÒýÇæ£¬Ä¬ÈÏappium
¡ñ platformName£ºÖ¸¶¨Òƶ¯Æ½Ì¨£¬Android»òÕßiOS
¡ñ platformVersion£ºÖ¸¶¨Æ½Ì¨µÄϵͳ°æ±¾¡£ÀýÈçÖ¸¶¨Androidϵͳ°æ±¾Îª4.2
¡ñ appActivity£º´ý²âÊÔappµÄActivity£¬×¢Ò⣬ÔÉúappµÄ»°ÒªÔÚactivityǰ¼Ó¸ö“.”
¡ñ appPackage£º´ý²âÊÔappµÄ°üÃû(package)ÐÅÏ¢
2 ץȡÊÖ»úÉÏÓ¦ÓõĿؼþ£¬Ö¸¶¨¶ÔÓ¦µÄ¿Ø¼þÀ´½øÐвÙ×÷
ͨ¹ýAndroid SDKÄÚÖù¤¾ßuiautomatorviewer.batÀ´²é¿´ÊÖ»úÓ¦ÓõĿؼþ²ÎÊý

3 ¶Ôץȡµ½µÄ¿Ø¼þ½øÐвÙ×÷£¬±ÈÈçµã»÷¡¢Ìîд²ÎÊýµÈ
ü scroll
scroll(self, origin_el, destination_el):
´ÓÔªËØorigin_el¹ö¶¯ÖÁÔªËØdestination_el
¾ÙÀý£ºdriver.scroll(el1, el2)
Ó÷¨£ºdriver.scroll(el1,el2)
ü tap
tap(self, positions, duration=None):
Ä£ÄâÊÖÖ¸µã»÷(×î¶àÎå¸öÊÖÖ¸)£¬¿ÉÉèÖð´×¡Ê±¼ä³¤¶È(ºÁÃë)
¾ÙÀý£ºdriver.tap([(100, 20), (100, 60), (100, 100)], 500)
Ó÷¨£ºdriver.tap([(x,y),(x1,y1)],500)
ü swipe
swipe(self, start_x, start_y, end_x, end_y, duration=None):
´ÓAµã»¬¶¯ÖÁBµã£¬»¬¶¯Ê±¼äΪºÁÃë
¾ÙÀý£ºdriver.swipe(100, 100, 100, 400)
Ó÷¨£ºdriver.swipe(x1,y1,x2,y2,500)
ü keyevent
keyevent(self, keycode, metastate=None):
·¢ËͰ´¼üÂë(°²×¿½öÓÐ)£¬°´¼üÂë¿ÉÒÔÉÏÍøÖ·ÖÐÕÒµ½
Ó÷¨£ºdriver.keyevent(‘4’)
ü press_keycode
press_keycode(self, keycode, metastate=None):
·¢ËͰ´¼üÂë(°²×¿½öÓÐ)£¬°´¼üÂë¿ÉÒÔÉÏÍøÖ·ÖÐÕÒµ½
Ó÷¨:driver.press_ keycode(‘4’)
ü text
text(self): ·µ»ØÔªËصÄÎı¾Öµ
Ó÷¨:element.text
ü click
click(self): µã»÷ÔªËØ
Ó÷¨:element.click()
ü get_attribute
get_attribute(self, name): »ñÈ¡Ä³ÔªËØµÄÏà¹ØÖµ
Ó÷¨£ºelement.get_attribute(“name”)
ü size
size(self): »ñÈ¡ÔªËØµÄ´óС(¸ßºÍ¿í)
Ó÷¨ driver.element.size
ü page_source
page_source(self): »ñÈ¡µ±Ç°Ò³ÃæµÄÔ´
Ó÷¨£ºdriver.page_source
ü quit
quit(self): Í˳ö½Å±¾ÔËÐв¢¹Ø±Õÿ¸öÏà¹ØµÄ´°¿ÚÁ¬½Ó
¾ÙÀý£ºdriver.quit()
ËÄ ×ܽá
1 Appium¿çƽ̨£¬Ö§³ÖAndroidºÍIOS×Ô¶¯»¯²âÊÔ¡£
2 AppiumÖ§³Ö¶àÓïÑÔ£¬Èçjava¡¢Object-C¡¢JavaScript¡¢Php¡¢Python¡¢Ruby¡¢C#¡¢ClojureµÈµÈ
3Ö§³ÖÔÉúÓ¦Óã¬webÓ¦ÓúͻìºÏÓ¦ÓÃ
4½öÖ§³ÖUI²âÊÔ
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍÈí¼þ²âÊÔѧԺËùÓУ¬»¶Ó×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍÈí¼þ²âÊÔÅàѵѧԺ
Ê×·¢£ºhttp://test.itcast.cn/
±±¾©Ð£Çø