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

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

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

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

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

相关推荐
EasyCVR42 分钟前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
Winston Wood2 小时前
Android Parcelable和Serializable的区别与联系
android·序列化
清风徐来辽2 小时前
Android 项目模型配置管理
android
wowocpp2 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
萨格拉斯救世主2 小时前
jenkins使用slave节点进行node打包报错问题处理
运维·jenkins
帅得不敢出门2 小时前
Gradle命令编译Android Studio工程项目并签名
android·ide·android studio·gradlew
川石课堂软件测试2 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
flashman9113 小时前
python在word中插入图片
python·microsoft·自动化·word
problc3 小时前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
pk_xz1234564 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器