当前位置:网站首页>Initial attempt at UI traversal
Initial attempt at UI traversal
2022-08-10 02:15: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

边栏推荐
- 递归 二分查找 冒泡排序 快速排序
- Chip Information|Semiconductor revenue growth expected to slow to 7%, Bluetooth chip demand still growing steadily
- 以太网PHY芯片LAN8720A芯片研究
- 小程序中计算距离信息
- 力扣每日一题-第51天-744. 寻找比目标字母大的最小字母
- 365 days challenge LeetCode1000 questions - Day 052 Step by step summation to get the minimum value of positive numbers Greedy
- R语言使用coxph函数构建生存分析回归模型,使用forestmodel包的forest_model函数可视化生存回归模型对应的森林图
- hint: Updates were rejected because the tip of your current branch is behind hint: its remote counte
- R语言使用cox函数构建生存分析回归模型、使用subgroupAnalysis进行亚组分析并可视化森林图
- 头脑风暴:单词拆分
猜你喜欢

Unity image is blurry after using long image

HCIP——综合交换实验

初步认识对象

GB28181 sip和RTSP(Real-Time Streaming Protocol)实时流控制协议

D-Biotinol Involved by Biotin, CAS No: 53906-36-8 Specific Properties Description

分析 20 个 veToken 生态系统协议 这种代币模型为何受欢迎?

Problems and solutions related to Chinese character set in file operations in ABAP

Unity image使用长图后 图片很糊

assert利用蚁剑登录

In the 2022 gold, nine, silver and ten work tide, how can I successfully change jobs and get a high salary?
随机推荐
鲜花线上销售管理系统的设计与实现
【软考软件评测师】软件测试基础知识
JVM :运行时数据区-虚拟机栈
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
商业模式及其 SubDAO 深入研究
D-Biotinol Involved by Biotin, CAS No: 53906-36-8 Specific Properties Description
Web性能测试模型小结
使用 GoogleTest 框架对 C 代码进行单元测试
XSS高级 svg 复现一个循环问题以及两个循环问题
ABAP 里文件操作涉及到中文字符集的问题和解决方案
ASEMI整流桥GBJ1010参数,GBJ1010规格,GBJ1010封装
unity编辑器扩展界面使用 List
shell指定参数名传参
头脑风暴:单词拆分
浏览器中的history详解
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
Research on Ethernet PHY Chip LAN8720A Chip
阿里云混合云管理平台多Region架构
Interlay集成至Moonbeam,为网络带来interBTC和INTR
pyhton之问~~~~~if __name__ == ‘__main__‘:是什么?