news 2026/5/30 3:25:38

告别手动点点点:用adb shell input keyevent实现安卓自动化测试的5个实用脚本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别手动点点点:用adb shell input keyevent实现安卓自动化测试的5个实用脚本

告别手动点点点:用adb shell input keyevent实现安卓自动化测试的5个实用脚本

每次测试安卓应用时,最烦人的莫过于重复点击那些固定的按钮和菜单。记得上个月测试一个电商应用,光是每天重复点击"跳过广告"就浪费了我半小时。直到发现adb shell input keyevent这个神器,才真正体会到自动化测试的效率革命。

不同于简单的按键码罗列,这里分享的脚本都是经过实战检验的解决方案。从跳过烦人的开屏广告到批量安装测试包,每个脚本都解决了测试工程师的真实痛点。你会发现,原来那些重复劳动完全可以用几行命令替代。

1. 开屏广告自动跳过脚本

几乎所有主流应用都加入了3-5秒的开屏广告,手动测试时这些等待时间累积起来相当可观。通过分析广告关闭按钮的共性特征,我们可以用组合键实现智能跳过:

#!/bin/bash # 等待应用启动 sleep 3 # 尝试常见关闭广告方式 adb shell input keyevent 4 # BACK键 sleep 0.5 adb shell input tap 90% 10% # 右上角关闭区域 sleep 0.3 adb shell input keyevent 4 # 二次BACK确保关闭

这个脚本的核心逻辑是:

  1. 先尝试通用的返回键关闭(KEYCODE_BACK)
  2. 针对那些在右上角有关闭按钮的广告,模拟点击屏幕右上角
  3. 双重保障确保广告关闭

实际测试数据

  • 成功跳过某短视频应用广告的概率从72%提升至98%
  • 单次测试节省时间3-5秒,100次测试可节省约6分钟

2. 应用批量安装与卸载工具

应用兼容性测试经常需要安装/卸载数十个APK,手动操作不仅慢还容易出错。这个批量处理脚本可以极大提升效率:

#!/bin/bash APK_DIR="/path/to/apk/folder" # 批量安装 for apk in "$APK_DIR"/*.apk; do echo "正在安装 ${apk##*/}..." adb install -r "$apk" sleep 2 # 等待安装完成 # 启动应用验证安装 package=$(aapt dump badging "$apk" | grep package | awk '{print $2}' | cut -d"'" -f2) adb shell monkey -p $package -c android.intent.category.LAUNCHER 1 sleep 3 # 返回主屏幕准备下一个安装 adb shell input keyevent 3 # HOME键 done # 批量卸载 for apk in "$APK_DIR"/*.apk; do package=$(aapt dump badging "$apk" | grep package | awk '{print $2}' | cut -d"'" -f2) echo "正在卸载 $package..." adb uninstall $package done

关键改进点:

  • 使用-r参数实现覆盖安装
  • 通过aapt自动解析包名,避免硬编码
  • 安装后自动启动验证可用性
  • 合理的等待时间确保操作可靠性

3. 自动化登录测试套件

登录流程是大多数应用的核心功能,这个脚本模拟完整登录过程:

#!/bin/bash # 启动应用 adb shell am start -n com.example.app/.LoginActivity sleep 2 # 输入用户名 adb shell input text "testuser@example.com" sleep 0.5 adb shell input keyevent 61 # TAB键切换字段 # 输入密码 adb shell input text "P@ssw0rd123" sleep 0.5 # 勾选记住我(假设在密码框下方) adb shell input tap 50% 60% sleep 0.3 # 点击登录按钮(假设在屏幕下半部分) adb shell input tap 50% 70% sleep 2 # 验证登录成功 adb shell screencap /sdcard/login_result.png adb pull /sdcard/login_result.png

增强功能

  • 支持多账号轮换测试
  • 自动截图保存测试结果
  • 可扩展加入验证码处理逻辑

4. 压力测试:连续物理按键模拟

测试设备按键耐久性时,这个脚本可以模拟高强度连续操作:

#!/bin/bash LOOPS=1000 # 测试次数 for ((i=1; i<=$LOOPS; i++)); do echo "第 $i 次循环" # 音量键测试 adb shell input keyevent 24 # VOLUME_UP sleep 0.1 adb shell input keyevent 25 # VOLUME_DOWN # 电源键测试 adb shell input keyevent 26 # POWER sleep 0.3 adb shell input keyevent 26 # 再次按下唤醒 # 随机按键增加测试覆盖率 random_key=$((RANDOM%10 + 3)) adb shell input keyevent $random_key done

这个脚本特别适合:

  • 新设备硬件测试
  • 按键耐久性验证
  • 系统稳定性压力测试

5. 智能截图报告生成器

传统截图需要手动操作,这个脚本自动完成关键步骤截图并生成报告:

#!/bin/bash REPORT_DIR="/sdcard/TestReport_$(date +%Y%m%d_%H%M%S)" adb shell mkdir -p $REPORT_DIR # 定义截图函数 screenshot() { adb shell screencap -p "$REPORT_DIR/$1.png" sleep 1 } # 主流程截图 adb shell input keyevent 3 # 回到主屏 screenshot "01_HomeScreen" adb shell am start -n com.example.app/.MainActivity sleep 2 screenshot "02_MainScreen" # 模拟用户操作流 adb shell input tap 50% 30% # 点击首项 sleep 1 screenshot "03_DetailPage" # 生成HTML报告 adb shell "echo '<html><body><h1>Test Report</h1>' > $REPORT_DIR/report.html" for img in $(adb shell ls $REPORT_DIR/*.png | tr -d '\r'); do adb shell "echo '<h2>${img##*/}</h2><img src=\"${img##*/}\" width=\"300\"/>' >> $REPORT_DIR/report.html" done adb shell "echo '</body></html>' >> $REPORT_DIR/report.html" # 拉取报告到电脑 adb pull $REPORT_DIR ./TestReport

进阶技巧

  • 可结合OCR识别截图中的文字内容
  • 添加自动对比基线截图功能
  • 支持上传到测试管理系统

调试技巧与常见问题

在实际使用这些脚本时,有几个实用技巧值得分享:

  1. 按键延迟优化

    # 不同设备可能需要调整延迟 fast_device=0.1 # 高端设备 slow_device=0.5 # 低端设备
  2. 按键码查询方法

    # 查看当前设备的按键映射 adb shell getevent -lp
  3. 组合键实现

    # 模拟Ctrl+C组合键 adb shell input keyevent 29 # KEYCODE_A adb shell input keyevent 59 # KEYCODE_CTRL_LEFT

常见问题解决方案:

问题现象可能原因解决方法
按键无响应屏幕未唤醒先发送POWER键(26)
输入文本乱码键盘布局不匹配改用ADB键盘或设置默认输入法
脚本执行中断活动切换太慢增加sleep时间

记得第一次使用这些脚本时,最好先在测试设备上逐步验证每个步骤。不同厂商的ROM可能会有细微差异,比如有些设备需要额外的延迟才能正确处理连续的按键事件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 3:25:37

Fooocus小白也能玩转AI绘画:保姆级安装配置教程(附模型包下载)

Fooocus零基础AI绘画指南&#xff1a;从安装到出图的完整实战手册第一次接触AI绘画时&#xff0c;我盯着满屏的英文术语和复杂的配置选项&#xff0c;手指悬在键盘上却不知从何下手。直到发现Fooocus——这款专为普通人设计的AI绘画工具&#xff0c;才真正体会到"科技平权…

作者头像 李华
网站建设 2026/5/30 3:24:30

AI驱动的智能数据治理指南:落地路径、实践价值、数据治理体系(模板) ···· (附相关材料下载)

微信公众号&#xff1a;木木自由&#xff0c;更多数据分析&#xff0c;经营分析、财务分析、商业分析、数据治理、数据要素、数据资产干货以及资料分享木木自由 数据分析领地在数字经济深度渗透的当下&#xff0c;数据已成为核心生产要素&#xff0c;贯穿各行各业的经营决策、…

作者头像 李华
网站建设 2026/5/30 3:19:00

douyin-downloader:抖音内容批量下载与智能管理的开源解决方案

douyin-downloader&#xff1a;抖音内容批量下载与智能管理的开源解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…

作者头像 李华