一. 移动端自带框架:
iOS 9.3 及其以上: 苹果的XCUITest (基本用这个)
iOS 9.3及以下: 苹果的UIAutomation
Android4.2+: 谷歌的UiAutomation (基本用这个)
Android2.3+ : 谷歌的Instrumentation(通过绑定另外的项目---- Selendroid Instrumentation的支持)
- 不需要把Appium特定的或者第三方的代码编译进你的应用
- 意味着你测试使用的应用与最终发布的应用并无二致
二、ADB介绍 1. 何为adb?
adb (Android Debug Bridge)是android sdk的一个工具
adb是用来链接安卓手机和PC端的桥梁,要有adb作为两者之间的维系,才能让用户在电脑上对手机进行全面的操作
Android的初衷是用adb这样的一个工具来协调开发人员在开发Android应用的过程中更快更好的调试apk,因此adb具有安装写在apk,拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行的shell命令等功能
2. 真机(真实的Android设备:手机/平板电脑)
- 确保手机已经通过USB线连接到电脑
- 通过驱动软件,驱动精灵/驱动人生等,将android手机驱动安装好
- 进入到手机,进行 设置---》关于手机----》点击5下版本号---》将对应的开发者选项打开(注意:手机可能打开方式不一样,可百度)
- 退出到上一级菜单,找到USB调试模式将其打开
- 还有最后一步,一般来说会出来一个允许调试的对话框,我们需要勾选,不然adb advice命令检测不到设备
3. adb组成 客
户端client : 运行在你的电脑上,你可以通过shell来调起一个客户端,其他Android工具例如ADT插件,DDMS
都可以创建出一个客户端
服务端server: 运行在你电脑的后台,负责管理client和daemon进行通讯
守护进程daemon: 运行在模拟器或者Android设备的后台
验证: 在cmd窗口输入adb
4. adb常见命令:
- adb --h elp : adb命令帮助文档
- adb devices : 检测连接到电脑的安卓设备
- adb logcat : 打印log信息
- adb pull 手机路径 本机路径 : 从手机中拉去信息到本地电脑上
- adb push 本机路径 手机路径: 从本地电脑推送信息到手机上去
- adb shell : 登录设备shell(命令行的人机界面), ls -l命令都可以用,进入到Linux命令环境了,相当于执行远程命令!(exit退出shell)
- adb install apk全路径 : 安装apk
(查看手机安装了那些包,adb shell,然后进入 /sdcard/Android/data目录, ls -l 命令便可显示所有包名)
- adb shell dumpsys activity| find "mFocusedActivity": (当前的一些包名和活跃界面 (必须是双引号) (注意: 命令不一定适用所有Android版本,Android8,9可能就不这个了))
- adb uninstall apk包名 : 卸载apk
- aapt dump badging 本地apk的全路径 : 获取安装包的相关信息(包含包名 & launchable-activity)
入口页面(入口activity): name='com.lemon.lemonban.activity.WelcomeActivity'
- adb connnect/disconnect : adb连接/断开
- adb kill-server: 终止adb服务
- adb start-server: 启动adb服务
- adb shell pm list packages : 列出所有包名
-f : 列出所有apk路径和包名
-s :列出系统apk路径和包名
-3 : 列出用户apk路径和包名
三、 示例代码以及参数说明:
# 1. 启动参数
desired_caps = {}
desired_caps["platformName"] = "Android" # 平台名称
# desired_caps["platformVersion"] = "6.0" # 真机版本
desired_caps["platformVersion"] = "5.1.1" # 模拟器平台版本
desired_caps["deviceName"] = "Android Emulator" # 设备名称,可自定义
desired_caps["appPackage"] = "com.lemon.lemonban" # 应用包名
desired_caps["appActivity"] = "com.lemon.lemonban.activity.WelcomeActivity" # 应用入口界面
desired_caps["noReset"] = True # 不重置应用的状态
# 代码运行必备的环境:
# 1) Appium 服务启动,appium处于监听状态
# 2) 模拟器/真机,能够被adb devices识别到
# 2. 连接appium desktop ,向aapium发送请求,在那个设备打开那哪个APP
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 连接Appium
四、注意
'''
可能会遇到问题:
1. Android系统版本太低,需要更新Android版本,尽量选择5.0以上的
2. 代码运行真机没问题,在模拟器上就有问题,失败(目前Appium 1.15 存在该问题, Appium安装1.13就可以了,Appium版本也要匹配)
'''