Appium app自动化测试经验分享之获取包名以及入口Activity

时间:2024-03-21 13:01:37

新年都过去了,我也该回来继续分享啦。很久没写自动化脚本,再拾起来,得学得更加透。
这次先分享下 获取包名和Activity的方法,这儿有自己实践过、总结的几种:

1. 包名-Python脚本中的appPackage

是拿网易云音乐来做例子,实际包名:com.netease.cloudmusic

1. 最简单-手机设置、正在运行服务【已安装】

查看包名 只需要进入 设置-更多应用-正在运行的服务(个别手机需要进入 开发者选项-正在运行的服务)-找到测试app

Appium app自动化测试经验分享之获取包名以及入口ActivityAppium app自动化测试经验分享之获取包名以及入口Activity

2. adb shell 的pm命令【已安装】

手机正常连接电脑后,直接在命令行界面输入:

adb shell pm list package

Appium app自动化测试经验分享之获取包名以及入口Activity

很多app的包名估计大家也很熟了,如上图 第一个百度网盘,第二个淘宝,倒数第三个支付宝,最后一个wps。

adb shell pm list package -3
参数-3:将获取手机内第三方apk对应的包名(不贴图啦)

3. 手机已root 可查看 /data/data/ 目录 【已安装】

手机在安装一款应用后,系统就会在 /data/data/ 目录下建一个目录,并且文件名就是当前这个应用的包名。
我手上的手机都没有root,没法提供成功的截图。
Appium app自动化测试经验分享之获取包名以及入口Activity

4. 其他工具:腾讯GT 【已安装】

GT是由腾讯无线研发部专项测试组研发的一款性能测试工具

Appium app自动化测试经验分享之获取包名以及入口Activity

5. uiautomatorviewer 【已安装】

元素定位一般都会用到uiautomatorviewer,其实也可以用它查看package(有时候也可以根据resource-id的属性值来判断)
Appium app自动化测试经验分享之获取包名以及入口Activity

6. logcat 抓取app日志 不推荐使用

抓取的日志搜索"package:" 有很多结果,是需要进行筛选的;
(此外搜索"cmp"会找到很多activity)

Appium app自动化测试经验分享之获取包名以及入口Activity

2. Activity-Python脚本中的appActivity

后面部分方法所得到的结果需要去掉斜杠,实际的Activity:com.netease.cloudmusic.activity.LoadingActivity

android.intent.action.MAIN 决定应用程序最先启动的Activity

android.intent.category.LAUNCHER 决定应用程序是否显示在程序列表里

1. Monkey测试

指定模拟随机事件为一次
Appium app自动化测试经验分享之获取包名以及入口Activity

2. dump package 获取安装包基本信息

Appium app自动化测试经验分享之获取包名以及入口Activity

3. dumpsys activity 信息查询

Appium app自动化测试经验分享之获取包名以及入口Activity
Appium app自动化测试经验分享之获取包名以及入口Activity
Appium app自动化测试经验分享之获取包名以及入口Activity

4. apktool 反编译

Appium app自动化测试经验分享之获取包名以及入口Activity

查看AndroidManifest.xml文件
Appium app自动化测试经验分享之获取包名以及入口Activity
Appium app自动化测试经验分享之获取包名以及入口Activity

5. 使用grep

grep:linux平台查找字符串命令,一般先adb shell 进入shell命令行再使用

logcat | grep START
Appium app自动化测试经验分享之获取包名以及入口Activity
logcat | grep cmp
Appium app自动化测试经验分享之获取包名以及入口Activity
adb logcat | findstr START
Appium app自动化测试经验分享之获取包名以及入口Activity

6. aapt(android asset packaging tool)

aapt 这个工具在 SDK 的 build-tools 目录下面;

aapt dump badging <file_path.apk>,可以查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息,即 Print the label and icon for the app declared in APK

Appium app自动化测试经验分享之获取包名以及入口Activity

可以找到 package: name=‘xxxx’
Appium app自动化测试经验分享之获取包名以及入口Activity

可以找到 launchable-activity: name=‘XXXX’
Appium app自动化测试经验分享之获取包名以及入口Activity

7. 不推荐使用

这种方法需要先打开应用,所以获得的activity极有可能不是入口Activity。

adb shell dumpsys activity | find “mFocusedActivity”
adb shell dumpsys window w | findstr / | findstr name=
adb shell dumpsys window |findstr mCurrent

Appium app自动化测试经验分享之获取包名以及入口Activity

实际脚本运行结果:
Appium app自动化测试经验分享之获取包名以及入口Activity
实际的报错原因:
Original error: Error occured while starting App. Original error: Permission to start activity denied.
Appium app自动化测试经验分享之获取包名以及入口Activity

其实方法千万种,掌握一种,学明白、用得上就够了。

交流技术 欢迎+QQ 153132336 zy