APP测试
- 掌握基于敏捷开发放的测试流程
- 掌握app的测试要点, 熟悉各种专项测试的关注点
- 熟悉GT工具的使用, 能使用GT工具进行对应的性能测试
1. app测试基础
1. app测试与web测试的区别
相同点:
1. APP和web使用的后端服务器是相同的
2. 前端后端都是用HTTP进行交互
不同点:
1. APP是c/s结构, web浏览器是b/s结构
2. app前后端交互的数据格式以json为主, web前后端交互的数据格式以HTML为主
2. app测试理论
1. app的应用架构
app属于c/s架构, 是通过HTTP协议来传输数据的, 通过json的格式来传送数据的
2. app项目环境及发布平台
1. app项目环境(后端服务器环境)
- 开发环境 是给开发人员进行代码联调的, 给开发进行自测的
- 测试环境 用来给测试人员进行测试用的, 测试环境也可能分为手工测试环境和自动化测试环境
- 预发布环境 当项目要上线时, 做最后一轮的验收测试时, 预发布环境的数据和生产环境的数据是一致的
- 镜像环境 当生产环境出现问题时, 把生产环境的相关数据以及代码全部拉到镜像环境, 复现生产上的问题, 然后由测试人员协助开发人员复现问题, 然后由开发人员去进行问题的定位和分析
- 生产环境 给用户或是客户使用的环境(生产环境测试人员不能随意操作, 由运维人员管理的)
2. 灰度发布
指在发布生产环境的过程当中, 先发布其中几台服务器, 如果这几台服务器功能运行一段时间后能够正常使用, 再把其他未升级或者为发布的服务器进行生产环境的发布, 如果先发布的服务器存在问题, 那么就要回滚带原来的版本
3. app项目发布平台
- android 安卓app文件的后缀名是 apk
- ios 苹果app文件的后缀名是 ioa
- 获取app安装包文件的方式一:
- android 可以直接找开发给出对应的安装包
- IOS 直接将手机给开发人员, 让开发人员安装对应的ipa包
- 获取aoo安装包文件的方式二:
- 可以借助内测平台 国内使用的是蒲公英, 国外使用的是fir.im
- 测试包生成之后会上传到蒲公英平台, 然后生成一个链接地址(二维码), 可以直接通过二维码或者链接地址下载对应的测试包
- 生产app安装包的获取
- anroid app安装包 豌豆荚, 应用宝, 360手机助手, 各类手机品牌商城
- ios app安装包 appstore
3. 敏捷开发模式
1. 互联网特点
- 互联网行业的特点: 追求创新, 以快吃慢, 需求高度不确定性
- 互联网行业的产品开发的特点: 新需求, 新方向
- 降低项目风险, 确保正确方向: 快速的反馈机制, 快速试错的流程(针对需求的不确定性)
2. 敏捷开发概念
以用户需求为核心, 采用迭代, 循序渐进的方法进行软件开发
在敏捷开发的过程当中, 软件项目在构建初期会被分成不同的子系统以及不同的迭代, 各个子项目的成果经过测试, 具备可视, 可集成和可运行的特征
3. 敏捷框架模型
- Lean-Agile
- Scrum
- XP
- DSDM
- Kanban
- Crystal
4. Scrum框架模型
1. 流程
Scrum是一个敏捷开发框架, 是一个增量的, 迭代的开发过程, 在这个框架中, 整个开发周期包括若干个小的迭代周期, 每个小的迭代周期成为一个Sprint(sprint: 项目开发过程中最小迭代周期), 每个sprint的周期建议为2~4周, 在Scrum中, 将产品Backlog(产品代办列表)an商业价值排除需求列表, 在每个迭代中开发团队从产品Backlog挑选最有价值的需求进行开发, 实现后产品推出市场, 进入下一个迭代
2. Scrum的三种角色
1. Product owner(产品负责人)
1. 定义所有的产品功能
2. 决定产品的发布内容与日期
3. 根据市场的变化对需要开发的功能排列优先顺序
2. Scrum Master(项目经理)
1. 领导团队完成Scrum的实践以及体现其价值
2. 确保团队的人胜任其工作, 并保持高效的生产率
3. 保护团队不受外界无端影响
3. Dev Team(开发团队)
1. 规模(经典团队一般5-9人)
2. 成员组成
1. 程序员
2. 测试员
3. 用户体验师
3. 主要职责
1. 实现客户的需求
3. 每日立会
知道每天干了什么, 明天计划干什么, 以及遇到的问题. 一般早上开会, 15分钟左右
3. app测试流程
- 参与需求评审 评审前一定看需求文档
- 制定测试计划 一般由测试负责人或测试主管制定
- 设计编写测试用例 如果人力时间紧张, 可以不用谢用例 需要些测试点, 用例评审
- 执行用例, 跟踪缺陷 搭建环境, 冒烟测试(有可能不做)
- 编写提交版本测试报告
2. app手工测试
1. app测试要点
- 功能测试
- 兼容性测试
- 安装, 卸载, 升级测试
- 交叉事件测试
- PUSH测试
- 性能测试
- CPU
- 内存
- 流量
- 电量
- 流畅度
- 启动速度
- 用户体验测试
- 稳定性测试
2. 业务功能测试
根据测试功能去拆分功能点, 再根据功能点去分析测试点
3. 兼容性测试(app专项测试)
- 系统 1. android 2. ios
- 手机系统版本 覆盖主流
- android
- ios
- 品牌-机型 覆盖主流
- android 华为, 小米, vivo
- IOS 苹果
- 屏幕分辨率 覆盖主流
- 软硬件兼容性
- 与手机硬件兼容
- home键, 电源键, 音量调节键等
- 与外部硬件兼容
- 耳机, 蓝牙
- 与操作系统软件兼容
- wlan设置, 系统时间调节, LBS定位等
- 与其他APP兼容
- 后台在播放音乐时, 进入动态页面点击动态视频播放, 系统如何处理
- 网络兼容性
- 2G\3G\4G\5G\WIFI
注意:
- 不可能去做全兼容测试
- 可以去做深度兼容测试, 需要借助于第三方云测试平台. testin云测
- 步骤: 在云测平台上注册账号, 上传app, 给钱, 获取测试报告
4. 安装卸载和升级(app专项测试)
只要能想到的, 都可以进行测试, 没有对错之分
1. 安装测试点:
- 正常场景
- 在不同的操作系统, 不同的手机版本进行安装
- 从不同渠道下载app进行测试
- 不同的安装路径, 安装在手机的内存或SD卡
- 异常场景
- 安装时出现异常(关机, 断网), 恢复后能否继续安装
- 安装时存储空间不够或内存不足
- 安装之后点击取消再安装
- 安装之后再次覆盖安装
- 低版本覆盖安装高版本
2. 卸载测试点
- 正常场景
- 长按app图标正常删除卸载
- 通过第三方工具卸载
- 异常卸载
- app正在运行时卸载
- 卸载过程中取消卸载
- 卸载过程中关机
- 卸载之后数据是否保留
3. 升级
- 正常场景
- 从低版本升级到高版本
- 从app内部升级
- 从app应用商城升级
- 异常升级
- 跨版本升级
- 升级提示
- 升级时关机
- 升级时电量不足
- 升级之后的数据检查
5. 交叉测试
又称冲突测试或者干扰测试
- app运行时接打电话
- app运行时收发短信
- app运行时接到推送通知
- app运行时接到视频通话
- app运行时连接蓝牙
- app运行时切换网络, 切换应用
- app运行时旋转屏幕
6. push消息推送测试
- 消息推送的场景
- 新闻资讯类通知 让用户实时获取到自己感兴趣的新闻, 从而增加用户的粘性
- 商城类通知 让用户获取到商城的促销活动, 提高用户的成交率
- 流程类通知 让用户及时获取处理工作的内容
- 推送原理 是由服务器通过推送的服务器将对应的消息推送到app端, 是一个长连接的状态
- 推送服务器 使用的是第三方推送服务器(极光或者信鸽)
- 手机厂商会有自己的推送服务器
- 中小企业不会自己搭建推送服务器, 一般都是使用第三方推送服务器
- push消息推送的关注点
- push消息推送是否按指业务规则发送
- 当push推送时, 检查是否按特定用户去进行推送
- 设置不接收消息时, 确认是否正常
- 推送通知的跳转是否正常
- 推送消息的打开及展示
- 包括app是否在运行, 都需要去关注推送消息是否能收到
7. 性能测试
1. 开启手机开发者模式以及超级管理员访问模式
1. 打开USB调试 点击系统应用->设置 最下方选择"关于平板电脑" 点击版本号 直接提示开发者选项已打开
2, 返回设置菜单界面 找到'开发者选项' 点击进入 打开USB调试以及指针位置
3. 开启超级管理员访问权限
点击'系统应用'->文件管理器 文件管理器上方有三个横线 在弹出的界面中点击左下方齿轮按钮 进入到设置页面后 选择常规设置->访问模式 将访问模式改为超级管理员访问模式
2. 性能工具介绍及安装
- GT随身调 anroid版是由腾讯公司开发大道性能测试平台, 直接运行在手机上面
- 可以通过GT工具进行基础的性能测试: 内存, CPU, 电量, 网络流量, 流畅度, 可以绘制图表的形式显示出指标的相关数据
- GT工具提供了查看日志的功能, 可以通过查看相关日志来分析和定位app功能异常以及crash等问题
3. CPU测试
1. GT 工具提供了两个CPU监控指标: CPU和jiffies
2. CPU指标就是指当前手机中CPU的整体使用率
用户态: cpu处于应用程序执行的时间
系统态: 表示的是系统内核执行的时间
空闲态: 表示空闲系统进程执行的时间
cpu使用率 = CPU空闲态/CPU总的执行时间
3. jiffies: 表示开机以来, 程序消耗的CPU时间片的总数
4. CPU问题的影响
1. CPU使用时间长时间处于90%以上(70, 80)
2. 手机发热, 耗电量增加
3. 反应变慢, 引起ANR(假死状态)
4. 内存测试
1. PSS和private dirty
1. private dirty(私有内存):
进程独占的内存, 也就是进程销毁时可以回收的内存容量
2. PSS(实际使用内存):
将跨进程共享内存也加入进来, 进行按比例计算PSS, 就能够准确的表示进程占用的实际物理内存
2, 常见问题
1. 内存泄漏
内存泄漏(memory leak): 当程序运行申请了对应的内存空间, 而当程序销毁时并没有释放对应的内存空间
2. 内存溢出
内存溢出(out of memory): 程序在申请内存空间时, 没有足够的内存空间供其使用
3. 内存问题产生的影响
1. 程序实际使用内存PSS会不断的增长
2. 程序会出现闪退(crash)
4. 内存的指标根据不同的手机配置, 以及不同的公司, 指标值不一样
3. 流畅度测试
1. GT工具提供了流畅度的监控指标: FPS
2. FPS指的是人肉眼能看到画面每一秒的帧数
3. 效果: 想要达到流畅的效果, 至少每秒的帧数要达到24帧
4. 每秒的帧数越高, 流畅度越好
5. 如果想要达到最佳的流畅度, 需要达到每秒60帧
6. 当页面静止不动时, FPS的值显示的是0
4. 流量测试
GT工具中提供了一个人监控流量的指标: NET
流量: 手机在访问网络过程当中所产生的上传和下载的数据(报文)就称为流量
- 常用流量测试方法
- 抓包测试法
- 通过抓包工具将所有的网络应用数据包, 全部抓取到并保存到某个文件中, 进行分析的过程
- wireshark所有协议的报文, sniffer也可以抓取所有报文, tcpdump命令可以抓所有报文
- 统计测试法
- 获取的是某一个应用程序获取的数据报文, 统计出对应的流量
- 抓包测试法
- GT工具的测试步骤
- 打开GT到AUT页面, 选择被测试的app, 勾选NET指标
- 进入到参数界面, 点击编辑, 拖选NET参数, 勾选并点击录制
- 进入待日志界面, 选择抓包, 再点击开始
- 返回到AUT界面, 点击启动, 启动测试app
- 返回参数界面, 停止录制, 再返回到插件界面, 点击抓包, 再点停止
流量的优化
- 数据压缩 在HTTP协议中可以通过此字段将数据进行压缩, 减少数据容量. 请求头中: content-encoding: gzip
- 不同的数据格式采用 json(简便) xml
- 控制访问频次 通过一部加载的方式来加载数据
- 只获取必要数据
- 缓存机制
- 懒加载 将多个图片放在同一张图片中, 一起加载
5. 电量测试
GT工具中提供了电量的监控指标: 电流, 电压, 电量跟温度
指移动设备电量消耗快慢的一种测试方法, 一般用平均电流来衡量电量的消耗速度
常见的耗电场景
- 定位, GPS
- 网络传输
- 蓝牙
- 屏幕的亮度
GT工具只能特定类型的机型进行电量设置
可换其他性能测试工具进行测试, 也可使用对比的方式进行测试(拿同类型的产品, 在同样的手法同样的场景下进行对比测试)
6. 用户体验测试
用户体验测试主要跟app的界面有关
- UI界面测试 包括界面设计, 界面元素框架, 结构, 颜色, 布局, 图片, 按钮选中的一些特效, 文字的内容
- 易用性测试 菜单的层次, 完成业务操作的步骤是否过多, 点击按钮的范围是不是合适, 返回键的操作
- 横竖屏测试 横屏之后, 页面的格式是不是能够正常显示
- 手机上其他的辅助功能 放大字体
7. 注意点
- 当app进行了充分的测试后, 可以编写测试报告, 发布app上线
- app的发布, 打包上传到各大应用商城
- 测试人员需要关注app线上的bug
- 运维需要关注app线上的运行环境
3. app自动化测试
1. 常用自动化框架介绍
- Robtium
- 基于android开发的一款开源的自动化框架
- 支持java语言
- 不支持跨平台
- macaca
- 由阿里巴巴开大的一套开源自动化解决方案'
- 适用平台: PC端, android, IOS
- 支持语言: java, python, nodejs
- Appium
- 是一款国外开源的自动化测试框架
- 适用平台: android, IOS
- 支持的语言: java, js, php, python, C#, ruby
- 社区活跃, 资源丰富
- appium特点:
- 开源
- 支持Native App(原生代码, 全部由android sdk的java代码生成) 原生的app如果页面有变更, 就得发布一个版本, 提交到应用商城去审核
- Web app(都是由H5生成的) 访问速度慢, H5代码以及元素信息
- Hybird App(既有native app也有H5页面) 混合app, 工作中使用最多
- 支持android, IOS
- 支持夸平台, 支持windows, linux, macos
- 支持多语言: java, js, php, python, C#, ruby
2. adb工具构成及原理
- ad包含三个部分
- adb客户端 用来下发adb的指令工具
- Server服务端 adb.exe执行之后的进程, 表示adb的服务端, 通过服务端与手机上的adb守护进程进行通信
- adb守护进程 随着android系统的启动而启动, 当android系统关闭之后它才会关闭
3. adb常用命令
1. 常看设备, 启动关闭adb服务
- adb devices 常看手机的设备名称以及状态
- emulator-5554 device emulator-5554表示的是手机设备的名称, device表示的是设备处于在线状态
- 如果不在线则是offline 如果adb服务没有启动. 下发该命令时, 会自动去启动adb服务
- adb start-server 启动adb服务
- adb kill-server 关闭adb服务
2. 获取包名和界面名
- 包名: app包名, 通过app的包名来区分不同的app, app包名是唯一的
- 界面名(启动名): 相当于web页面中的链接地址, 在app中, 每个界面都有一个名字
- 原因: 自动化过程当中, 需要通过app的包名和界面名来启动app
- 操作步骤 adb命令
- 在手机或者模拟器上打开app
- windows命令一: adb shell dumpsys window windows | findstr mFocusedApp
- window命令二: adb shell dumpsys window | findstr"usedApp"
- com.android.settings/.Settings com.android.settings是包名 .Setting是界面名, 通过/分割包名和界面名
- LINUX/MacOS命令一: adb shell dumpsys window windows | grep mFocusedApp
- LINUX/MacOS命令二: adb shell dumpsys window | grep"usedApp"
- 通过aapt获取app的包名和界面名
- aapt dump badging D:\BaiduNetdiskDownload\apptools\apk\xuechebu.apk后面表示的是app安装包路径及名称
- 包名: package: name='com.bjcsxq.chat.carfriend' #package:name 后面的字符串表示的是app包名
- 界面名: launchable-activity: name='com.bjcsxq.chat.carfriend.moudle_main.activity.SplashActivity' launchable-activity: name 后面的字符串是界面
3. 上传文件和下载文件
- 上传 将电脑上的文件上传至手机
- adb push 电脑上的路径 手机的路径
- 例: adb push ./1.txt /sdcard
- 下载 从手机上下载文件到本地
- adb pull 手机文件的路径 电脑文件夹的路径
- 例: adb pull /sdcard/1.txt D:\opt
4. 查看日志信息
1. 为什么要获取日志信息: 用来给开发定位问题
2. 命令: adb logcat 来查看相关的日志信息
3. 保存至文件夹: adb logcat > log.log
5. app启动速度测试(性能测试)
- 测试app启动速度的命令
- adb shell am start -W 包名/界面名
-
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.bjcsxq.chat.carfriend/.module_main.activity.SplashActivity }
Status: ok
Activity: com.bjcsxq.chat.carfriend/.module_main.activity.SplashActivity
ThisTime: 4825
TotalTime: 4825
WaitTime: 5587
Complete
- 关注TotalTime值, 在实际的测试过程当中, 会进行多次测试, 然后取平均值
6. 稳定性测试
- monkey 集成在adb工具中主要是用来做稳定性测试的, monkey通过java语言编写的一种稳定性测试工具
- 主要用来测试app会不会出现crash(崩溃)的情况
- 相当于让一只猴子来随机操作app, 所有的操作都有可能出现, 长时间操作来测试app会不会出现问题
- monkey 常用参数
- -p参数 对指定app进行随机操作
- adb shell monkey -p com.baidu.homework 100 (100次随机事件)
- -v参数 表示的是记录信息的级别
- level 0: adb shell monkey -p com.baidu.homework -v 100 默认级别
- level 1: adb shell monkey -p com.baidu.homework -v -v 100 打印出来的信息会比较详细, 只打印跟本程序有关的日志信息
- level 2: adb shell monkey -p com.baidu.homework -v -v -v 100 打印出来的信息会更多, 会显示其他程序运行的信息
- -s 参数 用于指定伪随机数, 如果两次伪随机数相同, 那么两次的操作步骤, 流程, 操作事件完全一样
- 主要作用 用来复现上次问题
- adb shell monkey -p com.baidu.homework -v -v -s 10 100
- --throttle 用于指定随机事件的间隔时间, 单位是毫秒
- adb shell monkey -p com.baidu.homework -v -v --throttle 3000 -s 10 100
- 组合使用
- adb shell monkey -p com.baidu.homework --throttle 500 --pct-touch 10 --pct-motion 50 -v -v -s 100 300 > log.log
- --pct-touch 10 触摸(10整个随机事件中的百分比)
- --pct-motion 50 滑屏(50整个随机事件中的百分比)
- 日志分析
- 如果事件中出现了ANR(application not responsing), 程序出现假死情况
- 如果日志中出现了Expection, 可能程序崩溃
- -p参数 对指定app进行随机操作
7. 手势操作命令
- 模拟点击事件
- adb shell input tap x y x y表示的是坐标点
- 模拟滑屏事件
- adb shell input swipe stratx starty endx endy stratx starty表示起始点坐标 endx endy表示终点坐标
- 模拟键盘操作
- adb shell input keyevent 键值 (3 表示HOME键 4 表示返回键 66 表示回车键)
- 模拟输入操作
- adb shell input text 内容 内容表示要输入的内容, 输入的内容不能是中文
- 如果计算机上连接了多个模拟器或是手机, 那么需要加上一个参数 -s + device_name
- adb -s emulator-5554 shell input keyevent 4
4. 弱网测试
- 弱网测试步骤
- 打开fiddler, 设置相应的代理窗口(当窗口被占用时序手动更改代理窗口)
- 在fiddler中设置上传和下载速度
- 点击;rules->cudtomize rules
- 修改上传和下载速度
- 点击performance -> simulate Modem Speeds启动弱网
- 在手机中设置网络代理
- 手机中的IP地址必须与fiddler电脑的IP地址是同一个局域网, 也就是同一网段
- wlan -> 长按连接电脑的无线网 -> 修改网络 -> 配置代理 -> 与连接的计算机在同一局域网
5. appium自动化
1. appium基础操作
1. 通过appium启动app
- driver.start_activity("包名", "界面名")
2. 获取包名和界面名
- driver.current_package 获取当前脚本运行中的app包名
- driver.current_activity 获取当前脚本中的app界面名
3. 关闭app以及关闭驱动
- 关闭app driver.close_app() 不需要跟参数
- 关闭驱动 driver.quit()
- 区别
- 关闭app之后, 可以再使用其他代码启动新的app
- 关闭驱动, 那么代码与appium服务器之间的链接已断开, 不能再进行任何操作
4. 安装卸载app以及判断是否安装app
- 安装app driver.install_app(apk路径)
- 卸载app driver.remove_app(app包名)
- 判断手机是否安装app driver.is_app_installed("包名")
- 返回值: True 有安装app, False 没有安装app"
- 将应用置于后台运行
- driver.background_app(seconds) seconds表示将app置于后台运行多少秒的时间
5. 单个元素定位
- 通过ID定位单个元素
- 通过元素的resource-id来进行元素定位
- driver.find_elememt_by_id(resource_id的值)
- 通过class_name定位元素
- 通过元素的class属性值来进行元素定位
- app中, class是值始终只有一个
- driver.find_element_by_class_name(class的值)
- 通过xpath定位元素
- 通过xpath的元素属性来进行元素定位
- driver.find_element_by_path("//*[@text='value']")
6. 定位一组元素
- driver.find_elements_by_id(resource_id)
- driver.find_elements_by_class_name(class_name)
- driver.find_elements_by_xpath(xpath表达式)
- driver.find_elements(By.ID, value)
- 返回的值是一个列表, 如果没有找到, 说明列表是空值, 可以通过下标来使用其中的元素对象, 下标从零开始
7. 获取元素的信息
- 获取元素的文本内容(获取的是元素text属性的内容)
- element.text
- 获取元素的位置
- element.location 返回值是一个字典, 字典中包含x和y, x和y表示的是元素在手机屏幕左上角的点的坐标
- 获取元素的大小
- element.size 返回值是一个字典, 字典中会包含width和height, width表示宽度, height表示高度
- 获取元素的属性值
- element,get_attribute('attribute') #attribute表示的是属性的名称
- 获取ID时, attribute = 'resourceId'
- 获取到的是class的值, attribute = 'className'
8. 初始化: 输入中文的处理
- 在初始化中增加两个参数
- 'resetKeyboard': True, # 重置设备的输入键盘
- 'unicodeKeyboard': True # 采用unicide编码输入
9. 初始化: 区分手册打开还是非首次打开
- 'noReset': True # 用来记住app的session, 如果有登录或者做过初始化的操作, 为True时, 后面不需要再操作
2. 手机操作
1. 获取手机分辨率
- 目的: 保证在不同机型上都能实现滑屏操作
- driver.get_window_size() 返回的值是字典类型, 包含height和width高度和宽度的值
2. 获取手机截图
- driver.get_screenshot_as_file(filename)
- 注意事项: 1. 路径必须手动创建 2. 文件名必须是以PNG结尾
3. 获取设置手机网络
主要是为了实现视频类的app中, 视频播放过程中网络切换时会有提示信息操作
1. 获取手机网络
- driver.network_connection
2. 设置手机网络
- driver.set_network_connection(connectionType) # connectionType 网络类型的值
4. 模拟键盘操作
- 常用的三个键值: 3 HOME键 4 返回键 66 回车键
- driver.press_keycode(键值)
5. 手机通知栏操作
- driver.open_notifications()
6. 滑屏和拖拽事件
1. swipe滑动事件
- driver.swipe(startx, starty, endx, endy, duration=None)
- duration是用来降低滑屏的速度及惯性, 单位是ms
7. scroll滑动事件
- scroll是通过元素来进行滑动的
- driver.scroll(source_element, target_element)
- scroll无法设置滑动持续时间, 带有一定的惯性. 主要用于IOS中, android高版本系统可以使用
8. drag_and_drop拖拽事件
- 从一个元素滑到另一个元素的位置, 同时也能实现将一个元素拖动到另一个元素当中
- driver.drag_and_drop(source_element, target_element)
- source_element 表示的是被拖动的元素对象
- target_element 表示的是目标元素对象
3. 高级手势操作
步骤:
- 创建TouchAction对象
- 调用手势方法
- 调用perform()执行操作
1. 轻敲操作
- action = TouchAction # 创建手势对象
- action.tap(element=None, x=None, y=None, count=1) # 调用轻敲手势方法, 传入的是一个元素对象或是一个坐标点, count表示的是轻敲的次数, 默认是1
- action.perform() # 调用perform执行轻敲操作
2. 按下和抬起操作
- 按下:
- press(element, x,y)
- 抬起:
- release()
3. 等待操作
- 模拟手指等待, wait(ms=0) ms表示的是等待毫秒数
4. 长按操作
- long_press(element, x=None, y=None, duration=1000)
- element表示的是元素对象
- x, y 表示的是坐标点
- duration表示的是长按时长, 单位是毫秒
5. 移动操作
- 模拟手指在手机屏幕上移动的过程
- move_to(element, x=x, y=y) ele表示的是元素对象, x和y表示的是坐标点, 二选其一
- 移动的操作是需要结合press和release一起使用
4. toast操作
- 获取toast消息, 在初始化配置中需要增加一个配置项, 否则定位不到
- "automationName": "Uiautomator2"