Python 随机按键模拟2小时

2020-12-30 0 242

案例故事:

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 随机按键模拟2小时的详细内容,更多关于Python 随机按键模拟的资料请关注自学编程网其它相关文章!

遇见资源网 Python Python 随机按键模拟2小时 http://www.ox520.com/27775.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务