• Appium自动化测试基础 — ADB常用命令(二)


    7、获取App的包名和启动名

    执行app自动化测试之前,必须要获取所测试App的appPackage(包名)和appActivity(启动名),之后将这两个值填写到脚本指定参数里,来告诉要执行的是哪个App。
    appPackage(包名):决定程序的唯一性(不是应用的名字)。app的包名是看不到的,需要执行命令才能查看得到的。
    appActivity(启动名):目前可以理解为一个启动名对应一个页面。
    App的包名和启动名获取方式有很多(任选其一即可):
    方式一:
    先在设备里打开要获取的App。
    输入命令 adb shell dumpsys window windows | findstr mFocusedApp
    例如:淘宝App,如下所示:

    1. # 链接逍遥模拟器
    2. C:\Users\L>adb connect 127.0.0.1:21503
    3. adb server version (31) doesn't match this client (41); killing...
    4. * daemon started successfully
    5. connected to 127.0.0.1:21503
    6. # 获取淘宝App首页的包名和启动名
    7. C:\Users\L>adb shell dumpsys window windows | findstr mFocusedApp
    8. mFocusedApp=AppWindowToken{1554db9 token=Token{a292380 ActivityRecord{9c92803 u0 com.taobao.taobao/com.taobao.tao.TBMainActivity t16}}}
    9. C:\Users\L>

    我们从上面可以看出,淘宝App的:
    appPackage为:com.taobao.taobao
    appActivity为:com.taobao.tao.TBMainActivity
    当我们点击淘宝App淘宝首页中的天猫国际,再次获取淘宝App的包名和启动名

    1. C:\Users\L>adb shell dumpsys window windows | findstr mFocusedApp
    2. mFocusedApp=AppWindowToken{f99dcd9 token=Token{8b7fb20 ActivityRecord{ab41a23 u0 com.taobao.taobao/com.taobao.browser.BrowserActivity t16}}}
    3. C:\Users\L>

    我们从上面可以看出,淘宝App的:
    appPackage为:com.taobao.taobao
    appActivity为:com.taobao.browser.BrowserActivity
    提示:斜杠前面的内容是包名,斜杠后面的内容是启动名。

    方式二:
    通过.apk程序文件来获取appPackage和appActivity。
    也就是获取在电脑上的apk的包名/启动名,此时还没有安装在设备上。
    步骤1:
    命令行进入Android SDK目录下aapt.exe程序所在的目录里。
    如图所示:

    步骤2:
    输入命令 aapt dump badging <path_to_apk>
    示例:
    进入aapt.exe程序所在的目录,在地址栏中输入cmd,按下回车,进入命令行终端。

    回车后进入命令行终端,如下图。

    输入aapt dump badging + apk路径命令

    F:\DevInstall\envs\android-sdk-windows\build-tools\25.0.3>aapt dump badging C:\Users\L\Desktop\com.taobao.taobao_V9.15.0.apk

    执行该命令会有很多内容,其中

    • package: name='com.taobao.taobao'为该app的包名信息。
    • launchable-activity: name='com.taobao.tao.welcome.Welcome'为该app的启动页的信息。(和上边一种方式是有区别的)

    提示:
    app的启动名和启动页的区别
    启动名指的是当前启动页面的名字,启动页是一个app的欢迎页面被启动,
    所以说启动名包含启动页。

    8、获取app启动时间

    adb命令:adb shell am start -W 包名/启动名
    示例:

    1. # 链接逍遥模拟器
    2. C:\Users\L>adb connect 127.0.0.1:21503
    3. adb server version (31) doesn't match this client (41); killing...
    4. * daemon started successfully
    5. connected to 127.0.0.1:21503
    6. C:\Users\L>
    7. # 获取淘宝App首页的包名和启动名
    8. C:\Users\L>adb shell dumpsys window windows | findstr mFocusedApp
    9. mFocusedApp=AppWindowToken{48d0f7f token=Token{a1f589e ActivityRecord{f5ca6d9 u0 com.taobao.taobao/com.taobao.tao.TBMainActivity t17}}}
    10. C:\Users\L>
    11. # 获取淘宝app启动时间
    12. # 包名:com.taobao.taobao
    13. # 启动名:com.taobao.tao.TBMainActivity
    14. C:\Users\L>adb shell am start -W com.taobao.taobao/com.taobao.tao.TBMainActivity
    15. Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.taobao.taobao/com.taobao.tao.TBMainActivity }
    16. Warning: Activity not started, its current task has been brought to the front
    17. Status: ok
    18. Activity: com.taobao.taobao/com.taobao.tao.TBMainActivity
    19. ThisTime: 0
    20. TotalTime: 0
    21. WaitTime: 3
    22. Complete
    23. C:\Users\L>

    解释:这里有三个时间

    • TotalTime:app⾃身启动时间。
    • WaitTime:系统启动应⽤时间(也就是系统启动应用耗时)。
    • ThisTime:app中启动页打开的时间。

    三者之间的关系:WaitTime = TotalTime + ThisTime

    9、查看内存信息

    adb命令:adb shell dumpsys meminfo <package_name>
    其中,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name命令来查找.
    演示命令:

    1. C:\Users\L>adb shell dumpsys meminfo com.taobao.taobao
    2. Applications Memory Usage (in Kilobytes):
    3. Uptime: 904975 Realtime: 904975
    4. ** MEMINFO in pid 1413 [com.taobao.taobao] **
    5. Pss Private Private Swap Heap Heap Heap
    6. Total Dirty Clean Dirty Size Alloc Free
    7. ------ ------ ------ ------ ------ ------ ------
    8. Native Heap 0 0 0 0 80384 65337 15046
    9. Dalvik Heap 56525 56392 0 0 63014 46630 16384
    10. Dalvik Other 9119 9116 0 0
    11. Stack 2680 2680 0 0
    12. Ashmem 344 4 0 0
    13. Other dev 26 0 24 0
    14. .so mmap 21428 3644 9028 0
    15. .apk mmap 2090 0 704 0
    16. .ttf mmap 176 0 24 0
    17. .dex mmap 46945 16 18444 0
    18. .oat mmap 6123 0 848 0
    19. .art mmap 2685 2252 0 0
    20. Other mmap 4808 16 2288 0
    21. Unknown 77191 77120 0 0
    22. TOTAL 230140 151240 31360 0 143398 111967 31430
    23. ...省略后边内容...

    提示:
    在命令行窗口运行上述命令,得到程序的内存情况信息如下说明:
    主要看

    • Native/Dalvik 的 Heap 信息
      具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。
    • Total 的 PSS 信息
      这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。

    总结:也就是看前两行,前两列就行。

    重点:配套学习资料和视频教学

    那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

  • 相关阅读:
    (一)Vue概述
    miRNA测序数据生信分析——第四讲,未知物种的生信分析实例
    uniapp 兼容pc与手机的样式方法
    解决Chrome无法自动同步书签
    [从零开始学习FPGA编程-51]:高阶篇 - 基于IP核的FPGA开发- 什么是FPGA IP核(软核、固核、硬核)与学习方法
    用Python编写自己的微型Redis
    js dispatchEvent派发自定义事件
    如何进行大数运算和高精度计算?
    SpringDataRedis快速入门(一)
    数据结构之算法
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/125509005