MonkeyRunner 之如何获取APP的PackageName和Activity Name

来源:互联网 发布:淘宝退款售后怎么清空 编辑:程序博客网 时间:2024/05/20 15:36

最近尝试学习使用monkeyrunner进行Android自动化测试,一开始均是使用点击屏幕坐标的方法来运行应用程序,可是点击屏幕坐标的方法比较麻烦,且通用性差。通过度娘我知道可以使用device.startActivity("package name /activity")这个函数来直接启用安装在手机中的app,可是如何获得activity却成了关键,现将获取activity的方法总结如下:

方法1:

1.先把apk包安装到手机上,

2.在android手机或者模拟器上配置Python环境

         1)下载和安装 Scripting Layer for Android (SL4A)

         2)下载和安装 Python for android

        3)打开Python for Android应用,在应用的最上方会有一个Install的按钮,点击该按钮,就会自动下载Python相关的文件并解压和安装,这个过程结束后,你的android手机上的Python开发环境就配置好了!

技术分享

 

3.打开SL4A应用,会进入Python示例代码列表,基本上是对主要API的演示,部分示例可能由于偏老,运行时会提示方法过期或者运行异常的问题,这个至少修改少许代码即可,有机会的话,我会在后续课程中介绍这是示例以及修正的方法。

点Menu键,然后点击Add,选择Python2.6.2,就会新建一个Python脚本文件,将文件的名字命名为:HelloPythonInAndroid.py

 技术分享

点击屏幕进入脚本编辑区,开始输入如下内容:

import android

import pprint

droid=android.Android()

apps=droid.getLaunchableApplications()

pprint.pprint(apps.result)

print ‘-------------------------------------‘

pacs=droid.getRunningPackages()

pprint.pprint(pacs.result)

4. 点击Menu,选择Save&Run,恭喜你,运行上面的代码,就可以获得应用程序的startActivity与package name

 技术分享

5.,通过下面的程序,测试apk

import sys

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

device=MonkeyRunner.waitForConnection()

device.startActivity(component=‘package name/startActivity name‘)

方法2:

使用re-sign.jar工具,下载地址http://troido.de/downloads/category/1

1) 在cmd下使用java –jar D:\re-sign.jar 运行。

2) 把APK包拖进去,信息就出来了

技术分享

 

方法3:

通过apktool获取apk package name(包名)以及activity name

         1)下载apktool:   http://code.google.com/p/android-apktool/

         2)将解压的三个文件(apktool.jar, aapt.exe,  apktool.bat) 拷贝到c: windows

现在,环境搭建完成。

3)cmd进入命令终端,执行 aapt dump badging  your.apk

就会看到对应的Package名,Activity名。

技术分享 

方法4:

查看AndroidManifest.xml

1.使用apktool反编译app:apktool.bat d es3.apk E:\apk\es

2.打开AndroidManifest.xml

manifest节点的package属性值是应用的包名:<manifest package=”com.estrongs.android.pop”>

查找android.intent.action.MAIN和android.intent.category.LAUNCHER对应的activity,该activity对应的android:name属性既是入口activity名称,如下:

<activity android:theme=”@*android    tyle/Theme.NoTitleBar” android:label=”@string/app_name” android:name=”com.estrongs.android.pop.view.FileExplorerActivity”>

<intent-filter>

<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />

</intent-filter>

</activity>

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

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

方法5:

  打开手机log,然后运行目标程序,然后分析log,在log中也可以找到Activity名称。

0 0
原创粉丝点击