adb 命令获取当前界面的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adb 命令获取当前界面的位置相关的知识,希望对你有一定的参考价值。

参考技术A 不积跬步无以至千里

通常以前都是通过as中的插件monitor来获取当前界面或者组件是哪个应用哪个界面的,接下来告诉大家如何通过adb命令来获取。

一、dumpsys 命令

1、当是普通的界面显示时(非窗口),命令如下:

adb shell dumpsys activity |findstr "mFocus"

adb logcat | grep "START u0"

测试场景:当前手机显示的是Launcher界面,运行如下图:​

2、当界面是有窗口的,考虑到有可能是一个应用调起的是另一个应用的窗口(预览窗口),你想要获取当前窗口的界面,命令如下:

adb shell dumpsys window |findstr "mFocus"

测试场景:当前手机显示的是在FileManager,并打开其中的一段音频,出现了音频播放的预览界面,运行如下图:



二、pm 命令

adb shell pm clear 包名 : 清空某个应用的数据

三、prop 命令

adb shell setprop prop的key  设置prop的value : 设置一些SystemProperties的值(这些prop的值是可改的,与prop命名有关)

adb shell getprop prop的key :获取SystemPropties对key值的value

Appium - 自动化测试框架 - adb

目录

一、前言

二、下载与安装

三、原理

四、常用命令

获取当前应用的包名和界面名

文件传输

获取app的启动时间

获取日志信息

连接安卓设备

进入安卓手机系统Linux系统命令行中

安装app到手机

卸载手机app

获取当前电脑已连接的设备和对应的设备号

启动adb服务

停止adb服务

其他的命令查询

五、问题汇总

六、后记


一、前言

        adb的全称是Android Debug Bridge(安卓调试桥),是一个命令行的调试工具,可以连接移动设备,使电脑与设备建立通信,通过执行一些命令,即可对所连接的设备进行操作。本文系博主在学习Appium之前所需的知识储备,仅以此文作记录。


二、下载与安装

  • 打开命令行窗口,输入adb,如下图所示,即为配置成功。


三、原理

  • 构成
    • 客户端(Client):运行在开发的机器上面,即电脑,用于发送adb指令。
    • 守护进程(Daemon):运行在调试设备上,即手机,用来接收客户端发送的指令,并作出相应的反应。
    • 服务器(Server):运行在开发机器上,用来联系客户端与守护进程,即adb服务。
  • 工作流程
    • 首先,在客户端发送adb指令,到达了adb服务器
    • adb服务器接收到指令后,发送给与其连接的调试设备
    • 调试设备中的adb守护进程接收到了指令后,作出相应的动作后,将响应发送给adb服务器
    • adb服务器反馈给客户端, 如下图所示


四、常用命令

  • 获取当前应用的包名和界面名

    • 包名(Package):用作指定唯一的应用程序。
    • 界面名(Activity):用来标记当前应用程序下的界面,即手机屏幕上看到的界面。

指令:adb shell dumpsys window | findstr mCurrentFocus

  • 文件传输

电脑 --> 手机

指令:adb push 电脑上的文件路径 手机上的文件夹路径

手机 --> 电脑

指令:adb pull 手机上的文件路径 电脑上的文件夹路径

  • 获取app的启动时间

    • 应用场景:工作中可能遇到这么个需求:“要求被测app打开的时间不能超过3秒”,此时,我们就要取获取app启动的时间。
    • 设备启动app每个过程所消耗时间:
      • 系统消耗时间:WaitTime - TotalTime
      • 应用启动消耗时间:TotalTime - ThisTime
      • 打开界面消耗时间:ThisTime , 如下图所示

指令:adb shell am start -W 包名/界面名(主页)

  • 获取日志信息

    • 应用场景:在测试移动设备过程中,遇到BUG后,会使用该指令来开启日志获取,从而定位BUG日志。
    • 步骤:
      • 先定位到要测的应用程序的触发bug界面
      • 开启日志监听
      • 触发bug
      • 获取日志信息

指令:adb logcat

  • 与安卓设备建立/断开通信

使用USB数据线连接电脑方式

指令:adb devices

使用无线的方式连接(电脑和手机必须在同网段下)

指令:adb connect 手机IP:端口号(不指定默认是5555)

断开连接

指令:adb disconnect 手机IP

  • 进入安卓手机系统Linux系统命令行中

指令:adb shell

  • 安装app到手机

指令:adb install 应用程序安装包(.apk后缀)

  • 卸载手机app

指令:adb uninstall 应用程序包名(Package)

  • 获取当前电脑已连接的设备和对应的设备号

指令:adb devices

  • 启动adb服务

指令:adb start-server

  • 停止adb服务

指令:adb kill-server

  • 其他的命令查询

指令:adb --help


五、问题汇总

  • adb使用无线连接的方式连接手机,连接失败,报错信息如下图所示。

解决方案:

1、先使用USB数据线连接设备和电脑

2、修改adb服务监听该设备的端口号,adb tcpip 8888

3、断开USB连接

4、使用无线连接指令,adb connect 手机IP: 8888


六、后记

        该文章会随着博主的继续学习,持续更新。

        如果知识点存在误区,还请各位博友在评论区中提出纠正。

        如果侵权,请在第一时间联系我,立即删除!

以上是关于adb 命令获取当前界面的位置的主要内容,如果未能解决你的问题,请参考以下文章

android利用adb命令,获取当前界面(当前Task的栈顶).

Appium - 自动化测试框架 - adb

adb 获取app包名和当前的activity名称

adb构成和工作原理和常用命令

ADB命令大全(adb命令获取签名证书信息)

如何用adb shell 指令获得android当前的activity