移动测试
1.移动测试介绍
-
定义
测试手机程序
-
测试内容
- 功能测试:查看功能是否正常
- 安装卸载测试
- 升级测试
- 兼容性测试
- Android系统版本
- 厂商二次开发版本
- 不同的分辨率
- 不同的网络
- 网络切换、中断测试
- 使用中来电话、短信
- 横竖屏切换
- 健壮性:耗电量、流量消耗、崩溃回复
2.环境搭建
-
java sdk
- 安装jdk
- 配置JAVA_HOME和PATH
-
Android SDK:
-
下载:https://pan.baidu.com/s/1YxRMwETjE2wVRqw5JO4aSw&passwd=79i0(参考https://blog.csdn.net/qq_36662150/article/details/115181924)
-
解压:将Andriod_SDK解压后,将build-tools、platform-tools和tools这几个文件夹复制到到D:\software\app_test目录下。
-
配置ANDROID_HOME,将platform-tools、tools的路径添加到系统变量PATH。
-
-
虚拟机安装
-
下载夜神模拟器
默认安装到C盘,安装好后可以将整个文件夹剪切到D:\software\app_test目录下,这样便于管理。需要将夜神模拟器中的adb.exe和nox_adb.exe用platform-tools目录下的adb.exe替换。
- 直接用platform-tools文件夹里面的adb.exe替换adb.exe
- 将platform-tools目录下的adb.exe复制到桌面,重命名为nox_adb.exe,替换夜神模拟器文件夹bin目录中的nox_adb.exe
-
-
下载并安装Appium
3.adb的使用
-
定义:db的全称为Android Debug Bridge,就是起到调试桥的作用。既包含ADB服务,也包含了与服务对应的Client。ADB是一个Server-Client程序,其中客户端是用来操作的电脑,服务端是android设备。
-
adb是android sdk里的一个工具,可以用来直接操作管理android模拟器或真实的android设备,它的主要功能有:
-
运行设备的shell(命令行)
-
管理模拟器或设备的端口映射
-
计算机和设备之间的文件传输
-
将本地apk软件安装至模拟器或android设备
-
常用命令
- 关闭及开启服务
adb kill-server adb start-server
- 查看设备
adb devices
- 进入手机终端
adb shell
- 获取信息
adb shell getprop ro.build.version.release 获取手机android版本 adb shell dumpsys window windows | findstr mFocusedApp 获取手机当前运行的程序和界面的名称
- 文件传输
adb push 电脑上的文件 手机上的位置 adb pull 手机上的文件 电脑上的位置
- 软件安装卸载
adb install 电脑上的apk文件路径 安装应用 adb uninstall 应用的包名
- 获取其他信息
adb shell am start -W 包名/.启动名
adb shell am start -W com.android.settings/.Settings
运行上面这条命令,会打开设置页面。
4.入门案例
"""
入门案例
1.自动化测试工具
选取Appium---支持的语言多、支持的平台多
坏境搭建:
1.安装appium的程序
2.在puthon中安装Appium-Python-Client
pip install Appium-Python-Client
"""
# 1.连接设备
# 组装一个字典,注明平台、系统版本、名称
# 注明要打开的应用和界面的名称
import time
from appium import webdriver
# server 启动参数
desired_caps = {
}
# 1.安卓系统
desired_caps['platformName'] = 'Android'
# 2.系统的版本号
desired_caps['platformVersion'] = '7.1'
# 3.手机名称,可通过命令:adb devices获取
desired_caps['deviceName'] = '127.0.0.1:62001'
# 4.应用程序的包名,也是app的包名,在手机中,包名是app的唯一标识
# 获取手机当前运行的程序和界面的名称
# adb shell dumpsys window windows | findstr mFocusedApp
desired_caps['appPackage'] = 'com.android.settings'
# 5.当前app里面的界面内容
desired_caps['appActivity'] = '.Settings'
# 从appium库里面导入driver对象
# driver = webdriver.Remomte('appium程序的地址','一个字典,要获取设置的要求')
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 2.执行操作
# driver.xxx
# element = driver.find_element_by_xx()
# element.xxx
# 打开设置页面,5秒后关闭
time.sleep(5)
# 3.退出
# 退出app包
driver.close_app()
# 关闭连接对象
driver.quit()
5.基础操作
-
基础API
- driver
- close_app()–>关闭打开的应用
- quit()–>断开连接
- install_app(‘apk在电脑的绝对路径’)–>安装应用
- remove_app(‘应用的包名’)–>卸载应用
- is_app_installed(‘应用的包名’)–>判断应用是否安装
- push_file(目标位置,base64编码的内容)
- pull_file(来源位置)–>返回值是base64编码的内容
- page_source–>获取界面xml源码
- find_element()–>可根据ID/NAME/CLASS_NAME/CSS_SELECTOR/TAG_NAME等查找元素
- find_elements()–>可根据ID/NAME/CLASS_NAME/CSS_SELECTOR/TAG_NAME等查找元素
- current_package–>获取当前操作的应用的包名
- current_activity–>获取当前操作的界面的名称
- element
- text–>获取元素文本内容
- click()–>点击元素对应位置
- get_attribute(属性名称)–>获取属性值
基础操作之app安装与卸载:
# 1.连接设备 # 组装一个字典,注明平台、系统版本、名称 # 注明要打开的应用和界面的名称 import time from appium import webdriver # server 启动参数 desired_caps = { } # 1.安卓系统 desired_caps['platformName'] = 'Android' # 2.系统的版本号 desired_caps['platformVersion'] = '7.1' # 3.手机名称,可通过命令:adb devices获取 desired_caps['deviceName'] = '127.0.0.1:62001' # 从appium库里面导入driver对象 # driver = webdriver.Remomte('appium程序的地址','一个字典,要获取设置的要求') driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 2.执行操作 # 安装app应用,如哔哩哔哩(32位),apk路径使用绝对路径 # driver.install_app('D:\\software\\iBiliPlayer-bili.apk') # 打开哔哩哔哩,获取应用信息--包名等 # adb shell dumpsys window windows | findstr mFocusedApp # mFocusedApp=AppWindowToken{5787627 token=Token{8867341 ActivityRecord{d48ca28 u0 tv.danmaku.bili/.MainActivityV2 t18}}} # app卸载 # driver.remove_app('tv.danmaku.bili') # 判断应用是否已安装 if driver.is_app_installed('tv.danmaku.bili'): # 存在则卸载应用 driver.remove_app('tv.danmaku.bili') else: # 不存在则安装 driver.inst
- driver