一、Android环境搭建
1.1 Java环境
Mac 下安装为例:
1、在官网下载好jdk,双击进行安装即可
2、安装完成后配置环境变量,在终端输入 vi ~/.bash_profile
打开配置文件进行编辑,在配置文件输入Java配置信息:
# set jdk1.8
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH
export PATH
3、保存并退出配置文件,重启电脑,在终端输入 java -version
,正确输出版本信息即配置成功。
1.2 AndroidSDK环境
1、下载相应版本的SDK,推荐网站 https://www.androiddevtools.cn/
2、解压SDK包,记住这个目录位置,如 /Users/yl/soft/android-sdk-macosx
(目录不要有中文)
3、下载并安装Platform-Tools https://www.androiddevtools.cn/
或者打开终端,cd到Android SDK的tools目录下,执行./Android sdk
命令, 打开管理界面来安装Platform-Tools
4、配置环境变量
vi ~/.bash_profile
在配置文件中输入如下内容,并保存退出:
# set android
ANDROID_HOME=/Users/yl/soft/android-sdk-macosx
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export ANDROID_HOME
export PATH
1.3 Android模拟器安装
1、下载VirtualBox虚拟机,https://www.virtualbox.org/wiki/Downloads,下载后双击安装即可
2、下载模拟器 genymotion,https://www.genymotion.com/download/,下载后双击安装即可
3、虚拟机镜像导入
以 Samsung Galaxy S6 - 5.1.0 - API 22 - 1440x2560.ova
镜像为例,打开VirtualBox,点击“管理-导入虚拟电脑”,选择ova镜像
4、启动模拟器
打开genymotion,在弹框选择 personal use:
二、为虚拟机提供安装apk功能
安装genymotion ARM插件,此插件可提供x86运行环境,下载对应版本的插件进行安装即可:https://blog.csdn.net/GHY2016/article/details/83422620/
如下载Android 5.1版本插件 ARM_Translation_Lollipop_20160402.zip
三、adb调试工具
3.1 adb工作原理
3.1.1 adb的概念
adb 全名 Android Debug Bridge,是一个Android系统调试工具。
可用于Android 应用开发和测试。
安装应用
打开终端,执行 adb install apk安装包的完整路径
,
如 adb install /Users/wanger/weChat.apk
3.1.2 adb的构成和工作原理
adb 包含3个部分:
1、client端:运行在开发机器中,即本地电脑,用来发送adb命令;
2、daemon守护进程:运行在调试设备中,手机或模拟器,用来接收并执行adb命令;
3、server端:运行在开发机器中,用来管理client端和daemon之间的通信。
client端将adb命令发送给server端,server端将命令发送给daemon,daemon执行完命令后,将结果返回给server,server将结果给client。
3.2 adb常用命令
3.2.1 获取包名和界面名
包名(package):决定程序的唯一性,如果包名一样,在安装时就会进行替换,如软件更新就是包名一致
界面名(activity):也叫启动名,一个界面名对应一个界面,如短信界面,它有一个它自己的界面名
应用场景
测试哪个应用程序的哪个界面
使用步骤
1、打开需要测试的应用程序
2、输入adb命令
命令格式
-
Mac/Linux:
adb shell dumpsys window windows | grep mFocusedApp
-
Windows:
adb shell dumpsys window windows | findstr mFocusedApp
3.2.2 文件传输
发送文件到手机,如给手机导入500条联系人数据
命令:
adb push 电脑文件路径 手机文件夹路径
例:发送一张图片到手机的sd卡
执行命令:
adb push /Users/yl/Pictures/0001.JPG /sdcard
打开手机的文件管理器,查看图片:
从手机拉取文件
命令:
adb pull 手机的文件路径 电脑的文件夹路径
例:将手机的图库中的照片下载到电脑
执行命令:
adb pull /sdcard/DCIM/Camera/IMG_20210306_203418.jpg /Users/yl/Pictures
3.2.3 获取app启动时间
应用场景
测试某个应用程序的启动时间。
命令
adb shell am start -W 包名/启动名
例:启动 com.android.contacts/.activities.PeopleActivity 并进入界面
执行命令:
adb shell am start -W com.android.contacts/.activities.PeopleActivity
ThisTime: 该界面启动耗时,即activity(毫秒)
TotalTime: 应用自身启动时间 = ThisTime + 应用程序代码运行时间(application)(毫秒)
WaitTime: 系统启动应用耗时 = TotalTime + 系统资源启动时间(毫秒)
3.2.4 获取手机日志
应用场景
获取日志,有助于bug定位等。
使用步骤
1、打开需要测试的应用程序
2、找到触发bug的位置
3、使用查看日志命令
4、触发bug
5、获取日志信息
查看日志命令
adb logcat
运行命令后,会对操作进行监听并输出相应的日志信息:
3.2.5 其他
四、Appium环境搭建
Appium是一个移动端的自动化框架,可用于测试原生应用(Android或iOS的SDK编写的应用)、移动网页应用(如safari、chrome等)和混合型应用。
4.1 Appium客户端安装
1、官网下载相应版本的软件进行安装,http://appium.io/
2、安装好后,双击打开,进行配置
3、启动成功:
4.2 Appium-python库安装
直接执行如下命令即可:
pip install appium-python-client
五、使用Appium启动应用程序
在测试某个应用程序之前,需要先打开它。
5.1 例:打开手机的通讯录
1、打开手机模拟器
2、打开appium工具
3、创建一个python项目,名为test_appium
4、创建一个python文件,名为demo.py
5、编写代码:
import time
from appium import webdriver
desired_caps = dict()
desired_caps["platformName"] = "Android"
desired_caps["platformVersion"] = "5.1"
desired_caps["deviceName"] = "192.168.56.101:5555"
desired_caps["appPackage"] = "com.android.contacts"
desired_caps["appActivity"] = ".activities.PeopleActivity"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(5)
driver.quit()
运行demo.py文件,打开模拟器查看。
如果运行demo.py报错:
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find adb Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
需要配置appium客户端的环境变量,重启客户端:
5.2 参数详解
import time
from appium import webdriver
desired_caps = dict()
# 平台名称,如iOS、Android,大小写皆可
desired_caps["platformName"] = "Android"
# 平台版本,如Android 5.1、8.2
desired_caps["platformVersion"] = "5.1"
# 设备名称,在Android中可以随便命名,但不能为空,建议通过 "adb devices" 命令获取
desired_caps["deviceName"] = "192.168.56.101:5555"
# 要打开的应用程序,通过"adb shell dumpsys window windows | grep mFocusedApp" 命令获取
desired_caps["appPackage"] = "com.android.contacts"
# 要打开的界面,通过"adb shell dumpsys window windows | grep mFocusedApp" 命令获取
desired_caps["appActivity"] = ".activities.PeopleActivity"
# 连接appium服务器
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(5)
# 退出
driver.quit()
appium启动,实际是在本地开启一个端口为4723的服务,
python代码就访问appium服务,并获取driver对象,
appium将driver对象调用的方法转换为post请求,提交给appium服务,
appium服务将接收到的post请求发送给手机,手机再执行相应的操作。