案例故事:
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 随机按键模拟的资料请关注其它相关文章!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]