移动端测试环境搭建(Android+Appium)

一、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请求发送给手机,手机再执行相应的操作。

原文地址:https://www.cnblogs.com/yanlin-10/p/14490264.html