App自动化测试笔记
App功能测试:
1.业务逻辑正确性测试: 产品文档,隐性需求- 写成测试用例
2.兼容性测试:
1.系统版本:
android版本:官方版本(5.1 4.3 6.0…) 华为 小米 魅族
iOS版本:官方版本
2.分辨率:480x720 1920x 1080,关注点:图片展示
3.网络情况:2G 3G 4G Wi-Fi
3.异常测试:
1.热启动应用:应用置于后台,应用置于前台过程
2.网络切换&中断恢复
3.电话&信息中断恢复
4.升级&安装卸载测试
1.升级:系统升级,渠道升级,临近版本(1.0->1.1),跨版本(1.0->1.5)
2.安装卸载测试:系统版本,首次安装,覆盖安装,卸载后安装,卸载->安装->卸载
5.健壮性测试:
1.手机资源消耗:cpu,内存
2.流量消耗:图片,传输数据压缩
3.崩溃恢复测试:闪退,报错误
ADB:
1.帮助:adb —help
2.启动adb server:adb start-server
3.关闭adb server: adb kill-server
4.设备号:adb devices
5.系统版本号:adb shell getprop ro.build.version.release
adb -s 设备号 shell getprop ro.build.version.release
6.电脑文件发送到手机:adb push 电脑文件路径/文件 手机存储路径
7.从手机拉取文件: adb pull 手机文件路径 电脑文件存储路径
8.查看手机运行日志:adb logcat 扩展 可以通过过滤报名取到指定app运行日志(mac/linux:| grep 包名 win: | findstr 包名)
9.进入手机shell命令行: adb shell 可以操作类Linux命令 top 过滤app占用资源
10.获取app包名和启动名:
1.mac/linux:adb shell dumpsys window windows | grep mFocusedApp
2.win:adb shell dumpsys window windows | findstr mFocusedApp
adb -s 设备号 shell dumpsys window windows | findstr mFocusedApp
11.安装apk到手机:adb install apk文件路径
12.卸载app:adb uninstall 包名
13.获取app 启动时间:adb shell am start -W 包名/启动名
14.指定某台设备:adb -s 设备号
Appium:
appium: 封装android官方自动化工具uiautomator
appium原理图:脚本 <-> appium服务 <-> 手机端 ->uiautomator
appium声明手机驱动对象:webdriver.remote(服务地址,启动参数)
关闭app: close_app() # 关闭当前app 但不关闭driver
关闭驱动对象: quit() # 退出手机驱动对象,同时关闭所有关联窗口
启动新的app:start_activity(包名,启动名)
appium-安装app:install_app(app在电脑端的路径)
appium-卸载app:remove_app(包名)
判断app是否安装:is_app_installed(包名) # 安装返回True, 未安装:返回False
appium-电脑文件发送到手机:push_file(手机存储路径,data) # data:base64编码数据
appium-从手机拉取文件:pull_file(手机存储路径) # 返回是base64编码数据
获取当前屏幕内元素结构:page_source # 返回的是<<当前>>屏幕
定位元素:元素的基本定位基于<<当前屏幕范围内>>展示的可见元素。
单个元素定位:
1.id:find_element_by_id(id_value)
2.class: find_element_by_class_name(class_value)
3.xpath: find_element_by_xpath(xpath_value)
常用xpath语句://*[contains(@text,’要查询的内容’)]
注意:当有多个相同的属性值时,通过单个元素定位方式,默认选取第一个。
一组元素定位:
1.id:find_elements_by_id(id_value)
2.class: find_elements_by_class_name(class_value)
3.xpath: find_elements_by_xpath(xpath_value)
显示等待:
在一定超时时间范围内,每隔一段时间去搜索一次,搜索到返回定位对象,没有搜索到直到到达超时时间报超时异常
WebDriverWait(驱动对象,超时时间, 搜索元素间隔)\
.until(lambda x: x.find_element_by_id(“属性值”))
业务:进入设置 - 点击更多 - 移动网络 - 关闭移动数据网络漫游
app元素信息基本操作:
1.click()
2.send_keys(“发送的数据”)
注意:如果要发送中文,服务端启动参数需要配置:
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
3.clear():防止默认值,业务需求
4.text:获取元素文本内容
5.get_attribute(属性名)获取元素属性值,注意:属性名 不一定等于 元素属性key值
value='name' 返回content-desc / text属性值
value='text' 返回text的属性值
value='className' 返回 class属性值,只有 API=>18 才能支持
value='resourceId' 返回 resource-id属性值,只有 API=>18 才能支持
6.location:获取元素在屏幕上坐标
7.获取包名方法:current_package
8.获取启动名:current_activity
app元素事件操作:
1.swip滑动:从一个坐标滑动到另外一个坐标,可以设置持续时间 方法:swipe(start_x, start_y, end_x, end_y, duration=None)
2.scroll:从一个元素滑动到另外一个元素,直到页面自己停止 方法:scroll(origin_el, destination_el)
3.drag_and_drop:从一个元素滑动到另外一个元素,第一元素替代第二个元素位置 方法:drag_and_drop(origin_el, destination_el)
4.background_app:热启动,将app置于后台一段时间 方法:background_app(秒数)
app手机操作api
1.获取手机时间:device_time
2.获取手机分辨率 :get_window_size() 扩展:根据分辨率扩展做一些滑动操作
3.发送键值到设备执行对应键值的操作:keyevent(key对应的值 讲义找/方法中提供的官网地址):
4.操作手机通知栏:open_notifications() 建议:通过xptah的包涵语法取值/点击操作
5.获取手机当前网络:network_connection 返回网络类型值 0 1 2 4 6
6.设置网络(可能需要超级管理员权限)set_network_connection(网络类型值->讲义/方法当中有)
7.手机截图:get_screenshot_as_file(存储文件路径+文件名)
环境安装:
1.安装Nodejs,appium-doctor
2.安装Appium客户端
3.安装python,配置环境变量
4.安装pycharm
5.安装appium,直接在命令提示窗口中 输入pip install Appium-Python-Client
6.在pycharm中验证appium是否安装成功,import appium不报错
7.安装android studio 和SDK,并安装虚拟机,安装虚拟机选择最新版本的SDK
ADB命令总结:
1.帮助:adb —help
2.启动adb server:adb start-server
3.关闭adb server: adb kill-server
4.设备号:adb devices
5.系统版本号:adb shell getprop ro.build.version.release
adb -s 设备号 shell getprop ro.build.version.release
6.电脑文件发送到手机:adb push 电脑文件路径/文件 手机存储路径
7.从手机拉取文件: adb pull 手机文件路径 电脑文件存储路径
8.查看手机运行日志:adb logcat 扩展 可以通过过滤报名取到指定app运行日志(mac/linux:| grep 包名 win: | findstr 包名)
9.进入手机shell命令行: adb shell 可以操作类Linux命令 top 过滤app占用资源
10.获取app包名和启动名:
1.mac/linux:adb shell dumpsys window windows | grep mFocusedApp
2.win:adb shell dumpsys window windows | findstr mFocusedApp
adb -s 设备号 shell dumpsys window windows | findstr mFocusedApp
adb shell dumpsys activity activities | findstr "Run"
11.安装apk到手机:adb install apk文件路径
12.卸载app:adb uninstall 包名
13.获取app 启动时间:adb shell am start -W 包名/启动名
14.指定某台设备:adb -s 设备号
Appium报错
1.PID 15356 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package com.android.settings
解决:Android系统设置中的开发者选项 - OEM锁没打开
2.selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command.
解决:手机重新连接,
定位元素:
1)控制真机,需要在appium客户端创建一个Session,需要配置手机 系统,版本,手机设备号,app的包名,启动名,不初始化手机app信息等,
2)对于虚拟机,下载SDK,需要最新版本的SDK,新建模拟器,在sdk\tools 路径下 uiautomatorviewer.bat用于定位元素
定位元素常用:driver.find_element_by_xpath("//*[contains(@text,'声音')]").click()
data = WebDriverWait(driver, 5, 1).\
until(lambda x: x.find_element_by_id("com.android.settings:id/search"))
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
get_attribute(属性名)获取元素属性值,注意:属性名 不一定等于 元素属性key值
value='name' 返回content-desc / text属性值
value='text' 返回text的属性值
value='className' 返回 class属性值,
value='resourceId' 返回 resource-id属性值,
App自动化测试笔记相关推荐
- App自动化测试笔记(十一):综合案例
短信案例 需求 在<短信>应用中,进入发送短信页面,在姓名和内容栏中,输入对应的数据,并点击发送. 包名界面名:com.android.mms/.ui.ConversationList 发 ...
- App自动化测试笔记(十二):Yaml数据
目录 Yaml数据格式 应用场景 字典和列表相互嵌套 规律 字典嵌套字典 字典嵌套列表 列表嵌套字典 列表嵌套列表 yaml其他数据类型 Yaml读写 读取yaml 写入yaml Yaml数据驱动应用 ...
- App自动化测试-原理与安装-Appium+Python+网易mumu模拟器
App自动化测试(学习笔记一)--Appium原理与安装 APP自动化初始 Appium原理 Appium安装 Java jdk 1.8版本 Android sdk appium desktop ap ...
- 16 移动端app自动化测试 - 软件测试
软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏. 本节内容:移动端app自动化测试 文章目录 ...
- app启动页数秒加载 代码_干货 | App 自动化测试痛点(弹框及首页启动加载完成判断处理)
1. 常见痛点 App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了.很容易打消做自动化的热情,导致从入门到放弃.比如下面的两个问题 ...
- python app自动化测试框架_appium+python,app自动化测试框架
基于appium的app自动化测试框架 基于appium框架的app自动化测试 App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于we ...
- APP自动化测试系列之3种元素定位工具
VOL 179 30 2020-11 今天距2021年31天 这是ITester软件测试小栈第179次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...
- APP自动化测试系列之appium-desktop配置及录制脚本
VOL 177 23 2020-11 今天距2021年38天 这是ITester软件测试小栈第177次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...
- APP自动化测试系列之获取Android的Activity 和 Package
VOL 174 11 2020-11 今天距2021年50天 这是ITester软件测试小栈第174次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...
最新文章
- python【蓝桥杯vip练习题库】ALGO-195 1的个数
- 交叉熵代价函数——当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢...
- 当新零售遇上 Serverless
- java 数据库 字段名 转_Java正则表达式实现表字段名和驼峰式命名转换
- BPM与Workflow的区别
- ReviewForJob——堆排序
- 学术联赛 | 运用知识图谱技术,赋能多领域应用 ——“未来杯”AI学术联赛总决赛暨颁奖典礼圆满落幕...
- python语言例子_【Python】SimPy的使用示例-Go语言中文社区
- 这几天整理的 飞秋官方下载
- 在Java eclipse 中Spring Boot工具安装步骤
- 佳能ts9020墨盒不识别_佳能打印机哪一款性价比高 佳能打印机型号推荐【详解】...
- linux中匹配邮箱地址,Python正则匹配邮箱和电话号码
- Scapy:send函数剖析(参数、返回值、应用)
- 用Java做一个基于Swing的多人网络聊天室
- PHP学习总结(二)
- 华为3Com孤单上路
- 8b/10b编码技术系列(二):Disparity、RD、8b/10b编码
- web网页设计实例作业 ——中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板
- 台式计算机经常使用的硬盘是什么尺寸,台式机固态硬盘多大合适
- 如何在Ubuntu 20.04 / 18.04服务器中进入救援模式或紧急模式?