真机运行测试用例的方法
一, 打开手机的USB调试模式
二, 连接手机到电脑
将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices查看UDID,如下图所示:
如果有输出,就表示连接成功。
三, 启动Appium服务
根据查到的UDID启动appium服务,运行命令:
#>appium -a 127.0.0.1 -p 4723 –U 6207febc --no-reset
-U 参数后面跟的一串字符就是手机的UDID,这个是通过第二步查到的。
当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行测试脚本了。
四, 测试脚本的编写及运行
真机运行的测试脚本与模拟器上几乎是相同的,就是有些儿配置不太一样。具体脚本详解如下:
#! /usr/bin/env python
#coding=utf-8
from selenium import webdriver
desired_caps = {}
desired_caps[‘platformName‘] = ‘Android‘
desired_caps[‘platformVersion‘] = ‘5.1.2‘
desired_caps[‘deviceName‘] = ‘Lenovo P1c72‘
desired_caps[‘appPackage‘] = ‘com.xiangchao.starspace‘
desired_caps[‘appActivity‘] = ‘.starspace‘
driver = webdriver.Remote(‘http://localhost:4723/wd/hub‘, desired_caps)
driver.quit()
另开一个cmd窗口,运行测试脚本(python XXXX.py)即可。此时服务端就会有输出,程序在手机上运行。
注:在测试用例运行过程中,要在手机上安装Appium Settings,按提示允许安装就可以了。(为啥每次运行脚本都会提示安卓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
a、启动待测apk
b、开启日志输出:adb logcat>D:/log.txt
c、关闭日志输出:ctrl+c
d、查看日志
找寻:
appPackage = com.xiangchao.starspace appActivity = .starspace