Android测试中获取包名、Activity的方法总结

相信接触过 Android 自动化测试的同学都知道,很多场景下我们需要获取一个应用的 包名和 Activity,例如 MonkeyRunner 的 startActivity 方法,需要一个传入一个 component,加入是需要启动系统相机,我们传的就是 com.android.camera/com.android.camera.Camera,这里可将 Camera 前面的包名省略掉,即写成:com.android.camera/.Camera

用在什么地方

Monkey 命令

monkey 命令的格式如下:

1
adb shell monkey -p packageName <event-count>

这里 -p 后面跟的参数就是应用的包名

am 命令

am命令可以启动一个应用( -n ),使用 -W 选项可以获取到启动应用所消耗的时间,其命令格式为:

1
am start -n packageName/Activity

packageName/Activity 应用的包名,Activity,这里的 Activity 是指可以作为 task 栈中的初始 activity,其实就是你进入应用后的第一个显示的主界面,am 命令并不能启动任意的 activity

adb uninstall

使用 uninstall 可以卸载 Android 用,但其后面跟的参数为应用的包名,非 apk 名

自动化测试框架

  1. Monkeyrunner
    startActivity(),使用这个方法启动应用时需要 packageName/Activity,实质同 am 命令

  2. Appium
    初始化配置的时候需要设置 appPackageappActivity ,其实也是包名、Activity

如何获取

hierarchyviewer

在 Android SDK 下面的 tools 目录,有一个叫 hierarchyviewer 的工具,使用这个工具可以查看设备上当前打开的应用的包名与 Activity

缺点是只有在你的设备是开发机,view server开启的的情况下才能使用,比如小米手机的开发版本,模拟器

aapt

aapt 这个工具在 SDK 的 build-tools 目录下面(如果没有,则是因为没有下载),使用下面的命令,可以从中获取到应用的包名与 Actiity

aapt dump badging apk文件

在显示出来的信息中,可以找到 package: namelaunchable-activity: name

开发、反编译

反编译 apk,从 AndroidManifest.xml 文件中查找,或者直接向开发获取该清单文件

dumpsys 命令

这是个人最推荐的方法,请先打开你要获取包名及 Activity 的应用

  1. dumpsys window

    1
    2
    [xuxu:~]$ adb shell dumpsys window w | grep \/ | grep name=
    mSurface=Surface(name=com.android.camera/com.android.camera.Camera)

    注意:windows 下请使将 grep 替换成 findstr

  2. dumpsys activity

    1
    2
    [xuxu:~]$ adb shell dumpsys activity | grep mFocusedActivity
    mFocusedActivity: ActivityRecord{430fe770 u0 com.android.camera/.Camera t50}

    同样地注意不同系统替换 grep 和 findstr

脚本获取

最方便的方法

git clone https://github.com/gb112211/AndroidTestScripts.git 或者下载 zip包 解压(需要 Python 环境及配置 ANDROID_HOME

在 python 目录下直接双击运行 get_current_activity.py ,会在当前目录下生产一个 CurrentActivity.txt 的文本文件,里面会保存设备当前界面的包名及 Activity 名。

end…