使用 ADB 在某个特定时间点点击 Android 设备上的某个按钮

前提条件

  1. 安装 ADB:确保你已经在计算机上安装了 Android SDK(或单独的 ADB)。并将其添加到系统环境变量中,以便你可以在命令行中运行 adb。

  2. USB调试:确保 Android 设备已启用 USB 调试模式。这可以在设备的"设置" -> "关于手机"中,连续点击"版本号"7次,然后返回"设置" -> "开发者选项"中启用 USB 调试。

  3. 连接设备:通过 USB 数据线将 Android 设备连接到计算机。

流程步骤

  1. 查找设备的连接状态

    你可以通过运行下面的命令来确保连接状态:

    复制代码
    adb devices

    这将列出连接的设备,如果你的设备出现在列表中,就表示连接成功。

  2. 确定要点击的按钮的坐标

    为了点击按钮,你需要知道该按钮在屏幕上的确切位置(x, y 坐标)。你可以采取以下几种方法获取这些坐标:

    • 使用屏幕截图

      复制代码
      adb shell screencap -p /sdcard/screenshot.png
      adb pull /sdcard/screenshot.png .

      之后查看截图文件,以找到你想要点击的按钮位置。

    • 使用 UI 自动化工具

      你可以使用 uiautomator 工具来获取界面信息:

      复制代码
      adb shell uiautomator dump /sdcard/window_dump.xml
      adb pull /sdcard/window_dump.xml .

      然后通过分析 XML 文件找到你所需按钮的坐标。

  3. 编写点击命令

    假设你已经获取到按钮的坐标 (x, y)。接下来编写一个命令在特定时间点击该位置。你可以使用 sleep 命令来设置延迟。

    示例:假设确定按钮坐标是 (500, 800),你希望在10秒后进行点击。

    复制代码
    sleep 10 ; adb shell input tap 500 800
  4. 整合到一个脚本中

    如果你希望将命令放入一个脚本文件中,可以创建一个 .sh 文件(Linux/Mac OS)或 .bat 文件(Windows)。

    • Linux/MacOS 示例

      创建一个名为 click_button.sh 的文件,内容如下:

      复制代码
      #!/bin/bash
      sleep 10
      adb shell input tap 500 800

      然后给文件执行权限:

      复制代码
      chmod +x click_button.sh

      然后运行脚本:

      复制代码
      ./click_button.sh
    • Windows 示例

      创建一个名为 click_button.bat 的文件,内容如下:

      复制代码
      @echo off
      timeout /t 10
      adb shell input tap 500 800

      然后双击该文件运行。

运行脚本

确保设备连接正常后,运行你编写的脚本,等待 10 秒钟后,它将自动点击指定的按钮。

注意事项

  • 屏幕旋转:确保设备处于固定的屏幕方向(竖屏或横屏),因为这会影响坐标值。
  • 坐标准确性:不同设备的分辨率不同,确保你在对应的分辨率下获取坐标。
  • 权限设置:某些设备可能在 UI 自动化上有额外的限制,确保你的应用权限设置妥当。

window_dump.xml

当前页面完整的 UI 树结构信息都 dump 出来了,包括 view 的类名、资源 ID 和屏幕位置坐标等

相关推荐
yan123684 小时前
Linux 驱动之设备树
android·linux·驱动开发·linux驱动
aningxiaoxixi6 小时前
android stdio 的布局属性
android
CYRUS STUDIO7 小时前
FART 自动化脱壳框架一些 bug 修复记录
android·bug·逆向·fart·脱壳
寻找优秀的自己8 小时前
Cocos 打包 APK 兼容环境表(Android API Level 10~15)
android·cocos2d
大胃粥8 小时前
WMS& SF& IMS: 焦点窗口更新框架
android
QING6189 小时前
Gradle 核心配置属性详解 - 新手指南(二)
android·前端·gradle
QING6189 小时前
Gradle 核心配置属性详解 - 新手指南(一)
android·前端·gradle
_一条咸鱼_12 小时前
Android Runtime内存管理子系统启动流程原理(13)
android·面试·android jetpack
法迪12 小时前
Android的uid~package~pid的关系
android