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

            

    一直在爬坑,爬自己挖下的坑,爬别人挖下的坑。
  • 相关阅读:
    Linux服务器因为Nginx日志access.log文件过大项目无法访问的问题
    【译】StackExchange.Redis 中文文档(二)配置
    【译】StackExchange.Redis 中文文档(一)基础
    Redis应用(一)实时在线用户
    [.NET]Thread与Task的区别
    并查集(UnionFind)技巧总结
    [LeetCode题解]377. 组合总和 Ⅳ
    [LeetCode题解]216. 组合总和 III
    [LeetCode题解]39. 组合总和
    [LeetCode题解]40. 组合总和 II
  • 原文地址:https://www.cnblogs.com/Rabon/p/4332143.html
Copyright © 2011-2022 走看看