码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • UI遍历的初步尝试


    对于测试人员,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、类名是否获取成功

    1. 软件盘弹出来了,关掉软件盘输入

    NUM 3-4

    dump 界面组件元素,我们在这里只 dump 一些我们可以操作的界面元素,比如说可以点击的,可以滑动的界面元素。

    在 dump 的过程中,我们可以按照一般的 app 出现的特殊情况进行一个排序,比如列表的话,我们只取在界面范围内的元素,ViewPage ,我们可以优先取出来:

    判断列表在点钱界面有几个子界面可以 dump:

    判断当前的控件是否显示在可见屏幕范围内:

    保存数据:

    NUM 5

    比对界面元素,判断当前要操作的组件。

    我们怎么比对当前界面操作的元素呢:这里分为两种比对方式

    1、MD5 比对, 在存储的串中,当前操作的MD5是否和当前界面生成的MD5是否相同。

    2、比对图片的相似度,每点击一次,比对一个图片相似度,如果存在相同的部分,直接抽取数据进行排列组合生成一个新的 list

    NUM 6

    操作界面元素

    NUM 7

    停止UI遍历

    停止条件:遍历时间和设置时间相同, 遍历步数和设置的步数相同, 返回手机屏幕界面,遍历结束

    效果

    SCREENSHOT

    哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(^▽^)PS:有问题可以联系我们哦v ceshiren001

    复制“下方链接”,提升测试核心竞争力!
    更多技术文章分享和免费资料领取

  • 相关阅读:
    计算机网络——16概述和传输层服务
    Ubuntu20.04沉浸式装机
    All in One:Prometheus 多实例数据统一管理最佳实践
    《代码大全2》第15章 使用条件语句
    分类预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多特征分类预测
    http1.1 的默认长连接 Connection: keep-alive 与 TCP KeepAlive 之间区别
    Numpy科学计算基础库--numpy基础知识
    【24种设计模式】工厂模式(Factory Pattern)
    STM32MP157A驱动开发 | 04 - Linux DRM显示驱动框架
    ARM之栈与方法
  • 原文地址:https://blog.csdn.net/Tester_muller/article/details/126258099
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号