当前位置: 首页 > news >正文

关于安卓App自动化测试的一些想法

        安卓App自动化一般使用Python+Appium。页面元素通常是使用AndroidStudio中的UI Automator Viewer工具来进行页面元素的追踪。但是这里涉及到一个问题就是,安卓apk在每次打包的时候,会进行页面的混淆以及加固,所以导致每次apk打包之后会出现页面元素id变化的问题。该问题一般有以下几种解决方案:

        1.使用相对位置对控件进行定位,但是缺点也很明显,一旦后端开发改变布局,则很多相关控件的定位需要重新进行书写。

        2.直接使用元素的class进行定位,缺点也很明显,一旦开发控件进行修改,则也需要修改。

        3.基于混淆的原理,即使解决了1,2点中的问题,随着每次打包,控件的id等信息也会随之改变。所以,可以让卡法给测试打包的时候取消混淆,这样控件可以最大程度保持之前的id,不至于每次都需要重新寻找最新的id。其次就是,将使用到的控件进行静态文件的封装,例如按钮1,对应btnClick,这个对应关系可以用类似于Java开发中的静态变量去进行控制,这样每次需要修改的时候,不需要去动主代码,只需要修改静态文件中的变量和实际值的对应关系即可。下图是一款之前为我们开发的软件,关闭混淆之后,页面控件id便会固定,不会被修改,大大减少了自动化测试的脚本修改成本。

       

相关文章:

关于安卓App自动化测试的一些想法

安卓App自动化一般使用PythonAppium。页面元素通常是使用AndroidStudio中的UI Automator Viewer工具来进行页面元素的追踪。但是这里涉及到一个问题就是,安卓apk在每次打包的时候,会进行页面的混淆以及加固,所以导致每次apk打包之后会出现页面…...

Bigemap GIS Office 2024注册机 全能版地图下载软件

对于需要利用GIS信息进行编辑、设计的用户来说,Bigemap GIS Office占有重要地位。用户可以使用Bigemap GIS Office作为工具进行设计、分析、共享、管理和发布地理信息。Bigemap GIS Office能实现多种数据流转、嵌入、融合以及更多地为用户提供数据的增强处理及多种分…...

秦时明月6.2魔改版+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设:秦时明月。 另外:本人承接各种游戏架设(单机联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。 教程是本人亲自搭建成功的,绝对是完整可运行…...

firewalld实现NAT端口转发

1、准备工作 # 开启 NAT 转发 firewall-cmd --permanent --zonepublic --add-masquerade # 开放 DNS 使用的 80 端口,tcp# 必须,否则其它机器无法进行域名解析 firewall-cmd --zonepublic --add-port80/tcp --permanent # 检查是否允许 NAT 转发 f…...

中国电子学会202309青少年软件编程(Python)等级考试试卷(二级)真题

青少年软件编程(Python)等级考试试卷(二级) 分数:100 题数:37 一、单选题(共25题,每题2分,共50分) 1、 yyh = [2023, 杭州亚运会, [拱宸桥, 玉琮莲叶]] jxw = yyh[2][0] print(jxw[1] * 2)以上代码运行结果是?( ) A. 宸宸 B. 杭杭 C. 玉玉 D. 州州 2、阿宝…...

第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)

第四天:从贾登峪到喀纳斯风景区入口,晚上住宿贾登峪; 从贾登峪到喀纳斯景区入口(贾登峪游客服务中心): 搭乘贾登峪①路车,路过三湾到达景区换乘中心,路程时长约40分钟; …...

个人常用命令

文章目录 linux命令基本命令screen docker命令 linux命令 基本命令 查看文件大小:sudo du -sh /文件路径 查看当前目录下所有文件夹大小,不进行递归:sudo du -h --max-depth1 远程复制文件:rsync -avz -e ssh -p 端口号 ip地址:/远程文件地…...

如何根据协议请求去捕捉在个文件中发出去的

场景:随着业务越来越复杂,一个“触发”可能发出去N个协议,此时有某一个协议发生了报错,需要去找这个协议,去文件中走读逻辑,去找该协议,效率很慢,业务极其复杂的情况下,很…...

Lombok -----此java库 常用的注解及其功能总结

总结 Lombok 是一个 Java 库,它可以帮助开发者减少在 Java 中编写那些繁琐的“boilerplate”代码的工作量,比如 getter 方法、setter 方法、构造函数、toString 方法等。 通过简单的注解,Lombok 能够自动为你的类生成这些方法&#xf…...

纯前端表格导出Excel

先写好两个js文件 直接复制粘贴 文件目录是这样的 Bolb.js /* eslint-disable */ /* Blob.js* A Blob implementation.* 2014-05-27** By Eli Grey, http://eligrey.com* By Devin Samarin, https://github.com/eboyjr* License: X11/MIT* See LICENSE.md*//*global self, …...

sourceTree保姆级教程7:(合并某次提交)

在日常开发过程中,大家有时候并非都是在同一个分支进行开发,可能存在多人的情况下开发。根据上线的需求依次提交代码。当然也可能存在交叉提交的情况。此时应如何在master分支去合并具体某一次的提交呢?下面就开始了: 1.打开本地…...

JVM面试知识点手册

第一部分:JVM 概述 1.1 JVM 简介 Java Virtual Machine(JVM) 是 Java 语言的核心组件,负责将 Java 程序编译后的字节码(bytecode)转换为机器指令,并在目标机器上执行。JVM 提供了硬件和操作系…...

Vue3.0组合式API:使用reactive()、ref()创建响应式代理对象

Vue3.0组合式API系列文章: 《Vue3.0组合式API:setup()函数》 《Vue3.0组合式API:使用reactive()、ref()创建响应式代理对象》 《Vue3.0组合式API:computed计算属性、watch监听器、watchEffect高级监听器》 《Vue3.0组合式API&…...

kubernetes调度2

1、各种缩写的应用 [rootk8s-master test]# kubectl get rsNAME DESIRED CURRENT READY AGEtest001-64c7957b5c 2 2 2 8m59stest001-698b98bb8f 0 0 0 12m[rootk8s-master test]# kubectl get replicas…...

Android中如何处理运行时权限?

在Android中,处理运行时权限是开发过程中一个至关重要的环节,它自Android 6.0(API级别23)引入,旨在提高用户隐私保护和应用的透明度。以下将详细阐述Android中处理运行时权限的方法、步骤、注意事项以及相关的最佳实践…...

【PyCharm】PyCharm:让开发者效率倍增的编程利器

在现代软件开发过程中,选择一款得心应手的编程工具不仅能提高效率,还能让编程过程更加愉悦。而在众多集成开发环境(IDE)中,PyCharm无疑是Python开发者的首选之一。作为一款功能强大、设计精良的IDE,PyCharm…...

Spring Boot- 配置中心问题

Spring Boot 配置中心相关问题探讨 在现代微服务架构中,随着系统规模的扩展和复杂度的增加,配置管理变得越来越重要。每个微服务都可能有大量的配置文件,包括数据库连接信息、缓存配置、消息队列配置等。如果每个服务独立管理配置文件&#…...

字符串专题-1

目录 1.简介 2.例题 2.1找出字符串第一个匹配项的下标 2.2最长公共前缀 2.3最长回文子串 2.4二进制求和 2.5字符串相乘 1.简介 关于字符串匹配的常用算法KMP,我这里只做思路上的说明,具体内容文字和图片写来写去还是有点怪异,这边推荐…...

Unsupervised Deep Representation Learning for Real-Time Tracking

摘要 我们的无监督学习的动机是稳健的跟踪器应该在双向跟踪中有效。具体来说,跟踪器能够在连续帧中前向定位目标对象,并回溯到其在第一帧中的初始位置。基于这样的动机,在训练过程中,我们测量前向和后向轨迹之间的一致性&#xf…...

第二讲 数据结构

单链表 826. 单链表 - Acwing题库 数据结构: e[N]:用于存储节点的值的数组。ne[N]:作为“下一个”指针的数组,用于连接节点。head:指向链表头部的索引。idx:当前可用的下一个索引。 初始化: …...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...