当前位置:网站首页>UI遍历的初步尝试
UI遍历的初步尝试
2022-08-10 00:34:00 【51CTO】
对于测试人员,UI 遍历已经很普遍了,比如说 Monkey, UICrawler 等等,都可以进行 UI 遍历。那我们怎么按照顺序去遍历一个 app 呢。下面介绍一个360 开测平台上用 uiautomator 做的 UI 遍历。
实现步骤
需要的参数:包名、启动类名、遍历截止类名、遍历时间、遍历总步数、遍历中需要登录的账号、登录密码。
实现思路:
①. 启动当前的 apk
②. 添加界面变化监听
③. dump界面组件元素
④. 排列界面组件元素
⑤. 比对界面元素
⑥. 操作界面组件元素,截图绘制
⑦. 遍历结束,停止UI遍历
详细说明
NUM 1
初始化参数配置
NUM 2
监听界面变化,这里我们添加 AccessibilityService 进行界面变化的监听,主要监听界面的三个变化,
TYPE_WINDOW_STATE_CHANGED, TYPE_WINDOW_CONTENT_CHANGED, TYPE_VIEW_CLICKED 窗口变化, 窗口内容变化,点击事件变化监听。
我们做一些初始化的判断:
1、包名是否正确
2、类名是否获取成功
- 软件盘弹出来了,关掉软件盘输入
NUM 3-4
dump 界面组件元素,我们在这里只 dump 一些我们可以操作的界面元素,比如说可以点击的,可以滑动的界面元素。
在 dump 的过程中,我们可以按照一般的 app 出现的特殊情况进行一个排序,比如列表的话,我们只取在界面范围内的元素,ViewPage ,我们可以优先取出来:
判断列表在点钱界面有几个子界面可以 dump:
判断当前的控件是否显示在可见屏幕范围内:
保存数据:
NUM 5
比对界面元素,判断当前要操作的组件。
我们怎么比对当前界面操作的元素呢:这里分为两种比对方式
1、MD5 比对, 在存储的串中,当前操作的MD5是否和当前界面生成的MD5是否相同。
2、比对图片的相似度,每点击一次,比对一个图片相似度,如果存在相同的部分,直接抽取数据进行排列组合生成一个新的 list
NUM 6
操作界面元素
NUM 7
停止UI遍历
停止条件:遍历时间和设置时间相同, 遍历步数和设置的步数相同, 返回手机屏幕界面,遍历结束
效果
SCREENSHOT
边栏推荐
- 温度响应性纳米水凝胶光子品体/纤维素修饰荧光水凝胶/载脂质体水凝胶的制备方法
- 3.11-程序基本的控制语句 3.12-表达式 3.13-数据类型 3.14-常量/变量 3.15-标识符
- Biotin-Cy2 Conjugate,生物素-Cy2 偶联物_Cy2 生物素偶联物
- OSS-访问oss生成的url无法访问,直接下载问题
- mstsc/Mstsc (Microsoft terminal services client)远程桌面连接
- pytest:如何在测试中编写和报告断言
- How to turn off system protection in Win11?How to turn off the system protection restore function?
- 【Grpc】简介
- 3.4 - 编译与解释 3.5 - 编译过程 3.8 - 文法
- Pyscript,创建一个能执行crud操作的网页应用
猜你喜欢
分析 20 个 veToken 生态系统协议 这种代币模型为何受欢迎?
渗透测试与攻防对抗——漏洞扫描&逻辑漏洞(Part1)
y92.第六章 微服务、服务网格及Envoy实战 -- Envoy基础(三)
Mysql database ALTER basic operations
c语言指针练习题
openEuler 知:abi 检测
What should I do if there is no sound after reinstalling the system in win10?
Pagoda measurement - building LightPicture open source map bed system
02|运算符
DALL·E-2是如何工作的以及部署自己的DALL·E模型
随机推荐
五种定位——粘性定位
手把手教你编写性能测试用例
关于HBuilder X鼠标变为_ 替换字符的问题
【CAS:41994-02-9 |Biotinyl tyramide】Biotinyl tyramide price
微信账户体系科普:什么是UnionId、OpenId与wxopenid?
递归 二分查找 冒泡排序 快速排序
How to activate the payment function on WeChat official account?
pyhton之问~~~~~if __name__ == ‘__main__‘:是什么?
无js实现弹出层效果
CMake 编译运行dpdk项目程序
-采花生-
365天挑战LeetCode1000题——Day 052 逐步求和得到正数的最小值 贪心
嵌入式Qt-实现两个窗口的切换
oracle的数据导入导出
c语言结构体、函数以及指针练习(简单通讯录)
CAS:183896-00-6 (Biotin-PEG3-C3-NH2) PEG衍生物
R语言使用glm函数构建logistic回归模型,使用forestmodel包的forest_model函数可视化逻辑回归模型对应的森林图
【Grpc】报错:status = StatusCode.UNIMPLEMENTED details = ““
CAS:851113-28-5 (生物素-ahx-ahx-酪胺)
Pagoda measurement - building LightPicture open source map bed system