【如何使用 Python 脚本通过 ADB 命令来检查 Android 文件内容】

在 Android 自动化测试中,有时我们需要通过 ADB(Android Debug Bridge)命令来检查设备上的文件内容,以确保不同文件中的文本是否一致。本文将教你如何编写一个 Python 脚本,通过 ADB 命令对比设备上的两个文件内容并输出检查结果。


目录
  1. 前提条件
  2. 脚本实现
  3. 代码解读
  4. 实际应用及结果验证
  5. 总结

1. 前提条件

在开始之前,请确保你已经完成以下配置:

  • 已安装 ADB(Android SDK 的一部分)。
  • Android 设备已启用开发者模式并允许 USB 调试。
  • 电脑与 Android 设备已正确连接,adb devices 命令能识别到设备。
  • 待比较的文件 45.3_buildinfo.txt 和 45.4_buildinfo.txt 已存在于 Android 设备的 sdcard/test/ 目录中。

2. 脚本实现

以下是 Python 脚本 telnet_android.py 的完整代码。这个脚本将使用 ADB 命令检查两个文件中的文本内容是否一致。

python 复制代码
import logging
import subprocess
import time

# 配置日志记录
logging.basicConfig(level=logging.INFO)

def send_adb_command(command, wait_time=2):
    """通过 ADB 发送命令并获取响应"""
    try:
        # 执行 ADB 命令
        logging.info("发送 ADB 命令: %s", command)
        result = subprocess.run(['adb', 'shell', command], capture_output=True, text=True, timeout=wait_time)
        
        # 获取并记录响应
        response = result.stdout.strip()
        logging.info("命令响应:\n%s", response)
        return response
    except subprocess.CalledProcessError as e:
        logging.error("执行 ADB 命令出错: %s", e)
        return None

def telnet_android():
    """依次执行文件内容对比操作"""
    # 发送第一个文件的读取命令
    value1 = send_adb_command('cat sdcard/test/45.3_buildinfo.txt')
    
    # 等待 1 秒
    time.sleep(1)
    
    # 发送第二个文件的读取命令
    value2 = send_adb_command('cat sdcard/test/45.4_buildinfo.txt')
    
    # 比较文件内容并输出结果
    if value1 == value2:
        logging.info("文本内容一样: Pass")
    else:
        logging.error("文本内容不一样: Failed")

# 示例用法
telnet_android()

3. 代码解读

send_adb_command 函数

该函数用于通过 ADB 发送命令并获取设备响应。

  • 参数 :
    • command:要发送的 ADB shell 命令。
    • wait_time:等待设备响应的时间,默认为 2 秒。
  • 实现步骤 :
    • 使用 subprocess.run 来执行 ADB 命令,捕获并返回输出。
    • 记录命令响应并返回其内容。
telnet_android 函数

该函数依次执行文件内容对比操作:

  1. 通过 cat 命令读取第一个文件的内容并存储在 value1 中。
  2. 等待 1 秒,然后读取第二个文件的内容并存储在 value2 中。
  3. 对比 value1 和 value2 的内容,并在日志中记录结果。

4. 实际应用及结果验证

运行脚本后,将在日志中看到以下输出:

  • 如果两个文件内容相同:文本内容一样: Pass
  • 如果内容不同:文本内容不一样: Failed
示例输出
shell 复制代码
INFO:发送 ADB 命令: cat sdcard/test/45.3_buildinfo.txt
INFO:命令响应:
版本信息 45.3
INFO:发送 ADB 命令: cat sdcard/test/45.4_buildinfo.txt
INFO:命令响应:
版本信息 45.4
ERROR:文本内容不一样: Failed

5. 总结

通过这篇文章,我们学习了如何使用 Python 和 ADB 命令来读取 Android 设备上的文件内容并进行对比。这种方式非常适用于自动化测试场景,尤其是在验证不同文件或配置的一致性时。希望这篇教程对你的 Android 自动化工作有所帮助。

相关推荐
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河5 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年5 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Williamtym5 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
小程故事多_805 小时前
从 Tokenizer 到 Next Token,穿透数据流,完整理解 Transformer 底层逻辑
android·深度学习·transformer
CS创新实验室5 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
CCblandy5 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
quantdash_cc6 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
把我格子衫拿来6 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
cpolar技术支持6 小时前
把配置发出去怕带出密钥?先把含凭据配置转成脱敏只读快照,用 cpolar 给同事核对差异
运维·python·内网穿透·cpolar·配置脱敏