一,打开手机的USB调试模式
  二,连接手机到电脑
  将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices查看UDID,如下图所示:

  如果有输出,表示连接成功。
  三,启动Appium服务
  方法一:cmd命令行启动
  根据查到的UDID启动appium服务,运行命令:
  #>appium -a 127.0.0.1 -p 4723  –U  6207febc --no-reset
  -U 参数后面跟的一串字符是手机的UDID,这个是通过第二步查到的。

  当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行测试脚本了。
  方法二:appium界面启动

  四,测试脚本的编写及运行
  真机运行的测试脚本与模拟器上几乎是相同的,是有些儿配置不太一样。具体脚本demo如下demo.py:
  #! /usr/bin/env python
  #coding=utf-8
  import os
  import time
  import unittest
  from selenium import webdriver
  from lib2to3.pgen2.driver import Driver
  from lib2to3.tests.support import driver
  PATH=lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))
  desired_caps = {}
  desired_caps['platformName'] = 'Android'  #设备系统
  desired_caps['platformVersion'] = '5.1.2'  #设备系统版本
  desired_caps['deviceName'] = 'Lenovo P1c72'  #设备名称
  desired_caps['app'] = PATH('C:\Users\LENOVO\Desktop\StarZone_V2.0.0.apk') 
  #desired_caps['appPackage'] = 'com.xiangchao.starspace'  
  #desired_caps['appActivity'] = 'com.xiangchao.starspace.activity.SplashActivity'
  #如果设置的是app在电脑上的路径,则不需要配appPackage和appActivity,同理反之
  driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  #启动app
  time.sleep(5)  #启动app时,需要一定时间进入引导页,所以必须设置等待时间,不然下面会一直报错定位不到元素
  driver.find_element_by_id('com.xiangchao.starspace:id/skip').click()
  driver.quit()
  另开一个cmd窗口,运行测试脚本(python demo.py)即可。此时服务端会有输出,程序在手机上运行。
  注:在测试用例运行过程中,正常情况下手机会自动安装Settings和Unlock,有些手机有兼容性问题,Settings和Unlock程序打不开,所以每次运行脚本都会提示安装,按提示允许安装可以。
  Appium的Desired Capabilities是扩展了webdriver的Desired Capabilities的,下面的一些通用配置是需要指定的:
  automationName:使用哪种自动化引擎。appium(默认)还是Selendroid?
  platformName:使用哪种移动平台。iOS, Android, orFirefoxOS?
  deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulator, Galaxy S4, etc...
  app:应用的路径,注意一定是路径。如果指定了appPackage和appActivity的话,这个属性是可以不设置的。另外这个属性和browserName属性是冲突的。
  browserName:移动浏览器的名称。比如Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android;与app属性互斥。
  udid:物理机的id。比如1ae203187fc012g。
  下面这些属性是android平台特定的:
  appActivity:待测试的app的Activity名字。比如MainActivity, .Settings。注意,原生app的话要在activity前加个"."。
  appPackage:待测试的app的java package。比如com.example.android.myApp, com.android.settings。
  获取Android app的appActivity
  网上有写很多方法https://testerhome.com/topics/1030,评论区还有补充
  我用的是把apk后缀改为zip格式,打开压缩包后再打开AndroidManifest.xml文件。找到manifest和activity地方,是包名跟activity名。