zoukankan      html  css  js  c++  java
  • MonkeyRunner 之如何获取APP的Package Name和Activity Name

    MonkeyRunner 之如何获取APPPackage NameActivity Name

     

     

     

    最近尝试学习使用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: e-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:apkes

    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名称。

            

    一直在爬坑,爬自己挖下的坑,爬别人挖下的坑。
  • 相关阅读:
    Java多线程运行机制的基本原理
    JAVA IO中的设计模式
    C++ 内存泄露处理方法 (转)
    使用PageHeap.EXE或GFlags.EXE检查内存越界错误 (转)
    32位Windows7上8G内存使用感受+xp 32位下使用8G内存 (转)
    windows 32位系统中进程最大可用内存空间为3GB (转)
    OpenGL 4.0 GLSL 实现 投影纹理映射(Projective Texture Mapping) (转)
    DebugView 调试工具
    剑桥中国史:“571”——林彪的未遂政变(转)
    邱会作与儿子对话:林彪的莫须有之罪(转)
  • 原文地址:https://www.cnblogs.com/Rabon/p/4332143.html
Copyright © 2011-2022 走看看