新年都过去了,我也该回来继续分享啦。很久没写自动化脚本,再拾起来,得学得更加透。
这次先分享下 获取包名和Activity的方法,这儿有自己实践过、总结的几种:
1. 包名-Python脚本中的appPackage
是拿网易云音乐来做例子,实际包名:com.netease.cloudmusic
1. 最简单-手机设置、正在运行服务【已安装】
查看包名 只需要进入 设置-更多应用-正在运行的服务(个别手机需要进入 开发者选项-正在运行的服务)-找到测试app
2. adb shell 的pm命令【已安装】
手机正常连接电脑后,直接在命令行界面输入:
adb shell pm list package
很多app的包名估计大家也很熟了,如上图 第一个百度网盘,第二个淘宝,倒数第三个支付宝,最后一个wps。
adb shell pm list package -3
参数-3:将获取手机内第三方apk对应的包名(不贴图啦)
3. 手机已root 可查看 /data/data/ 目录 【已安装】
手机在安装一款应用后,系统就会在 /data/data/ 目录下建一个目录,并且文件名就是当前这个应用的包名。
我手上的手机都没有root,没法提供成功的截图。
4. 其他工具:腾讯GT 【已安装】
GT是由腾讯无线研发部专项测试组研发的一款性能测试工具
5. uiautomatorviewer 【已安装】
元素定位一般都会用到uiautomatorviewer,其实也可以用它查看package(有时候也可以根据resource-id的属性值来判断)
6. logcat 抓取app日志 不推荐使用
抓取的日志搜索"package:" 有很多结果,是需要进行筛选的;
(此外搜索"cmp"会找到很多activity)
2. Activity-Python脚本中的appActivity
后面部分方法所得到的结果需要去掉斜杠,实际的Activity:com.netease.cloudmusic.activity.LoadingActivity
android.intent.action.MAIN 决定应用程序最先启动的Activity
android.intent.category.LAUNCHER 决定应用程序是否显示在程序列表里
1. Monkey测试
指定模拟随机事件为一次
2. dump package 获取安装包基本信息
3. dumpsys activity 信息查询
4. apktool 反编译
查看AndroidManifest.xml文件
5. 使用grep
grep:linux平台查找字符串命令,一般先adb shell 进入shell命令行再使用
logcat | grep START
logcat | grep cmp
adb logcat | findstr START
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
可以找到 package: name=‘xxxx’
可以找到 launchable-activity: name=‘XXXX’
7. 不推荐使用
这种方法需要先打开应用,所以获得的activity极有可能不是入口Activity。
adb shell dumpsys activity | find “mFocusedActivity”
adb shell dumpsys window w | findstr / | findstr name=
adb shell dumpsys window |findstr mCurrent
实际脚本运行结果:
实际的报错原因:
Original error: Error occured while starting App. Original error: Permission to start activity denied.
其实方法千万种,掌握一种,学明白、用得上就够了。