使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法:

方法一:使用aapt//aapt是sdk自带的一个工具,在sdk\builds-tools\目录下

1.以ES文件浏览器为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\apk\es3.apk


2.运行后的结果中以下两行分别是应用包名package和入口activity名称

package: name=’com.estrongs.android.pop’

launchable-activity: name=’com.estrongs.android.pop.view.FileExplorerActivity’


注:在android sdk目录搜索可以找到aapt.exe,如果没有可以下载apktool。 

方法二:使用eclipse的DDMS查看logcat

1.连接电脑,启动DDMS,启动好了之后,手机端启动app,,退出,查看logcat输出的关键字“WIN DEATH”:

android 从 attr 获取值 安卓获取所有activity_android

u0后面的就是activity了,但这个方法在有些应用中不生效,原因现在未知

后面看自己的学习,再把别的方式加过来吧

方法三:各种权限都开启

使用sdk/tools目录下hierarchyviewer.bat 工具可以获得(可以查看对应的app的activity)

方法四:通过在CMD窗口中执行adb logcat -v time -s ActivityManager查看对应的字段

在CMD窗口中执行adb logcat -v time -s ActivityManager,然后点击应用进入,如点击系统设置,进入后会有相应的日志信息打印出来,在信息中查找 cmp=com.android.settings/.Settings

方法五:通过adb shell dumpsys命令获得:

在CMD窗口中执行adb shell dumpsys window -h,会显示下面的帮助内容:

C:\Users\xuxu>adb shell dumpsys window -h
Window manager dump options:
[-a] [-h] [cmd] ...
cmd may be one of:
l[astanr]: last ANR information
p[policy]: policy state
a[animator]: animator state
s[essions]: active sessions
d[isplays]: active display contents
 t[okens]: token list
w[indows]: window list
cmd may also be a NAME to dump windows.  NAME may
be a partial substring in a window name, a
Window hex object identifier, or
 "all" for all windows, or
 "visible" for the visible windows.
 -a: include all available server state.

我们使用windows选项,执行adb shell dumpsys window w,在输出结果中我们可以找到打开的当前应用的component,而component中总是含有斜杠“/”,所以我们可以使用这个命令得到输出(进入系统设置应用),adb shell dumpsys window w | findstr \/ ,需要转义斜杠“/”,在linux下需要把findstr换成grep,此时输出的内容还是会比较多,不容易查找,再结果分析,发现可以再查找字符串“name=”,

接下来重新执行adb shell dumpsys window w | findstr \/ | findstr name= ,会输出下面的结果:

C:\Users\xuxu>adb shell dumpsys window w | findstr \/ | findstr name=
       mSurface=Surface(name=com.android.settings/com.android.settings.Settings)com.android.settings/com.android.settings.Settings 就是我们需要的component

接下来用python语句来获取该component:

import os  
import re  
  
def getFocusedPackageAndActivity():  
  
        pattern = re.compile(r"[a-zA-Z0-9\.]+/[a-zA-Z0-9\.]+")  
        out = os.popen("adb shell dumpsys window windows | findstr \/ | findstr name=").read()  
        list = pattern.findall(out)  
        component = list[0]  
  
        return component  
print getFocusedPackageAndActivity()


打印结果: com.android.settings/com.android.settings.Settings

如此就可以在使用monkeyrunner中的startActivity方法时调用该方法将获取到的component传入参数了!

有个别方法是转自: