获取 APP 的 Package 和 Activity
环境说明
以下环境安装的系统平台为 Windows,驱动安卓真机;脚本开发使用 Python3
获取 Package 和 Activity 前,需要确保 App 自动化测试环境搭建成功
获取 Package
下面以 speedtest App 为例,其他安卓 App 获取方式同理
方法一:通过 adb 命令获取
# 查看当前 device 中所有 apk 对应的 package name 和 path
adb shell pm list package -f
# 仅查看第三方的 apk package
adb shell pm list package -3 -f
注意:cmd terminal 的查找命令在 linux 和 mac 操作系统中对应关键字时 grep,在 Windows 操作系统中对应关键字是 findstr
# 过滤关键字,speedtest 包
adb shell pm list package -3 -f | findstr speedtest
方法二:使用 Airtest IDE 软件定位
1、安装 Airtest IDE 软件,并连接安卓真机
2、手机上打开 speedtest APP;Airtest IDE 软件 Poco 辅助窗口选择 Android
3、展开 xml 树结构,并选中。查看 Log 窗口的 package 字段的值即可获取该 App 的 packageName
获取 appActivity
方法一:adb 命令获取
如果需要获取 speedtest App 的 appActivity,首先在手机上打开 Speedtest App,然后输入以下命令
# dumpsys 命令
adb shell dumpsys window w | findstr mCurrent
# 对应定位到的 appActivity 就会自动被定位到并输出如下:
mCurrentFocus=Window{9c1afd u0 org.zwanoo.android.speedtest/com.ookla.mobile4.
screens.main.MainViewActivity}
注意:有时候通过上述 adb 命令得到 appActivity 并不完全正确。所以如果通过用上面获取到 appActivity 执行代码驱动 app 时,报 activity 错误时,请更换其他方式重新获取 appActivity。
上面获取到的 Speedtest App 的 appActivity 并不正确,需要使用方法二获取。
方法二:log 日志获取
首先在终端中执行下面命令,将日志写入 log.txt
adb logcat >D:/log.txt
然后打开 Speedtest App,操作几次,并在终端关闭日志写入。
打开 log.txt 文件,搜索 Package Name:org.zwanoo.android.speedtest
;以下为 log.txt 中的部分日志
11-10 17:50:37.731 3260 15780 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
11-10 17:50:37.732 3625 13833 I AppLifeChangeSensor: CAWARENESS: activityResumed componentName = ComponentInfo{org.zwanoo.android.speedtest/com.ookla.mobile4.screens.main.MainActivity}
11-10 17:50:37.732 1252 5214 D HiData_HwAPPQoEActivityMonitor: handleActivityChange, curPackage:org.zwanoo.android.speedtest, curClass:com.ookla.mobile4.screens.main.MainActivity
11-10 17:50:37.733 31522 31522 I ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
11-10 17:50:37.732 1252 1357 I StatusBarDisable: setFlags what=0 which=1 pkg=Window{d43dea6 u0 org.zwanoo.android.speedtest/com.ookla.mobile4.screens.welcome.WelcomeActivity}
11-10 17:50:37.733 1252 1354 W HwActivityManagerServiceEx: HwActivityNotifier end call for activityLifeState under user 0 cost 1
11-10 17:50:37.733 1252 5214 D HiData_HwAPPQoEResourceMangerImpl: checkIsMonitorAPKScence input :org.zwanoo.android.speedtest,com.ookla.mobile4.screens.main.MainActivity
11-10 17:50:37.733 1252 5214 D HiData_HwAPPQoEResourceMangerImpl: checkIsMonitorAPKScence input :org.zwanoo.android.speedtest,null
根据搜索结果,并排除不正确的 Activity 后,可得到下面正确的 appActivity
org.zwanoo.android.speedtest/com.ookla.mobile4.screens.main.MainActivity
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 算法复杂度计算
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论