Python实现Android设备随机按键模拟测试脚本

Ryan
Ryan
发布时间:2026-10-14| 3人浏览过
原创

本文介绍如何使用Python脚本在Android设备上模拟随机按键操作,以测试系统对按键事件的响应稳定性。通过ADB命令调用keyevent,结合random模块生成随机键值,并设置7200秒(2小时)的持续运行时间。文章提供了批处理、面向过程函数及面向对象类三种实现方式,适用于车载终端及手机硬按键的稳定性测试场景。

案例背景

针对Android终端设备(包括车载系统及手机等),

需要模拟执行各类随机按键操作(如车载方向盘按键、手机物理按键等), 以测试系统在处理随机按键事件时的响应稳定性,通常测试时长设定为2小时。

准备工作

通常使用adb shell input keyevent命令配合KeyCode来模拟按键事件。 例如,adb shell input keyevent 24可模拟“音量增加”按键, 以下是常用按键及其对应的键值表。

KeyCode 释义
3 Home键
4 返回键
5 电话拨号键
24 音量加键
25 音量减键
26 电源键
27 照相机启动键
87 多媒体下一曲键
88 多媒体上一曲键
91 音量静音键

Python批处理脚本实现

批量处理脚本的特点是:按顺序批量执行指令


# coding=utf-8
 
import os
import time
import random
 
TIMEOUT= 7200 # 2小时(7200s) 常量
once_time = time.time() # 获取当前时间戳,并保存到一个变量
keycode_dict = {3: "HOME键", 4: "返回键", 5: "电话拨号键", 24: "音量加键",
        25: "音量减键", 26: "电源键", 27: "照相机启动键", 87: "下一曲键",
        88: "上一曲键", 91: "静音键"}
 
# 循环获取当前时间,与once_time变量做时间戳做减法
while time.time() - once_time <= TIMEOUT:
  # 随机选择字典的某个“键”
  keycode = random.choice(list(keycode_dict.keys()))
  command = "adb shell input keyevent %s" % keycode
  print("成功按下了%s" % keycode_dict[keycode])
  os.system(command)
  time.sleep(0.5) # 间隔0.5s,再进行下一次按键模拟
  print("已经进行了 %d 秒..., 一共需要测试 %d 秒" % (time.time() - once_time, TIMEOUT))
 
os.system("pause")

Python面向过程函数实现

观察哪些代码块能组合成具体功能, 本案例中,可使用input_keyevent()函数代表输入按键事件的功能模块, 该函数可接收参数,指定按键事件持续的时间。


# coding=utf-8
 
import os
import time
import random
 
 
def input_keyevent(timeout):
  once_time = time.time() # 获取当前时间戳,并保存到一个变量
  keycode_dict = {3: "HOME键", 4: "返回键", 5: "电话拨号键", 24: "音量加键",
          25: "音量减键", 26: "电源键", 27: "照相机启动键", 87: "下一曲键",
          88: "上一曲键", 91: "静音键"}
 
  # 循环获取当前时间,与once_time变量做时间戳做减法
  while time.time() - once_time <= timeout:
    # 随机选择字典的某个“键”
    keycode = random.choice(list(keycode_dict.keys()))
    command = "adb shell input keyevent %s" % keycode
    print("成功按下了%s" % keycode_dict[keycode])
    os.system(command)
    time.sleep(0.5) # 间隔0.5s,再进行下一次按键模拟
    print("已经进行了 %d 秒..., 一共需要测试 %d 秒" % (time.time() - once_time, timeout))
 
 
input_keyevent(7200)
os.system("pause")

Python面向对象类实现

1.秉持“万物皆可归类”的理念,首先抽象出一个类,类名通常建议使用“名词”,因此命名为“KeyeventInputter”,代表按键事件输入器,且类名一般需采用驼峰命名法(首字母大写)以规范命名。

2.养成良好类的初始化(__init__)习惯,在初始化过程中,可定义属性,如self.keycode_dict。

3.定义方法(函数),即input_keyevent函数。 4.类是抽象概念,必须实例化为具体对象后才能调用,因此我们将其实例化并命名为k_obj,表明它是一个对象。 5.实例化为具体对象后,该对象即可调用input_keyevent函数。


# coding=utf-8
 
import os
import time
import random
 
 
class KeyeventInputter():
  def __init__(self):
    self.keycode_dict = {3: "HOME键", 4: "返回键", 5: "电话拨号键", 24: "音量加键",
               25: "音量减键", 26: "电源键", 27: "照相机启动键", 87: "下一曲键",
               88: "上一曲键", 91: "静音键"}
 
  def input_keyevent(self, timeout):
    once_time = time.time() # 获取当前时间戳,并保存到一个变量
    # 循环获取当前时间,与once_time变量做时间戳做减法
    while time.time() - once_time <= timeout:
      # 随机选择字典的某个“键”
      keycode = random.choice(list(self.keycode_dict.keys()))
      command = "adb shell input keyevent %s" % keycode
      print("成功按下了%s" % self.keycode_dict[keycode])
      os.system(command)
      time.sleep(0.5) # 间隔0.5s,再进行下一次按键模拟
      print("已经进行了 %d 秒..., 一共需要测试 %d 秒" % (time.time() - once_time, timeout))
 
 
k_obj = KeyeventInputter()
k_obj.input_keyevent(7200)
os.system("pause")

运行方式与效果

确保Android设备已通过USB线与电脑连接,且adb设备有效连接,以上代码的3种实现形式均可直接运行,例如保存为random_keyevent.py并置于桌面,建议通过python random_keyevent.py命令运行,当然也可以双击运行。

运行效果如下:

以上就是Python 随机按键模拟2小时的详细内容,更多关于Python 随机按键模拟的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。