python adb模拟输入_《自拍教程50》Python_adb随机按键模拟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)

now_time = time.time() # 获取当前时间戳,并保存到一个变量

keycode_dict = {3: "HOME键", 4: "返回键", 5: "电话拨号键", 24: "音量加键",

25: "音量减键", 26: "电源键", 27: "照相机启动键", 87: "下一曲键",

88: "上一曲键", 91: "静音键"}

# 循环获取当前时间,与now_time变量做时间戳做减法

while time.time() - now_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() - now_time, timeout))

os.system("pause")

Python面向过程函数形式

看哪些代码块,可以组成一个具体的功能,

这个案例,可以有一个输入按键事件的功能函数,input_keyevent(),

这个函数可以接收参数输入,可以指定输入多久的按键事件。

# coding=utf-8

import os

import time

import random

def input_keyevent(timeout):

now_time = time.time() # 获取当前时间戳,并保存到一个变量

keycode_dict = {3: "HOME键", 4: "返回键", 5: "电话拨号键", 24: "音量加键",

25: "音量减键", 26: "电源键", 27: "照相机启动键", 87: "下一曲键",

88: "上一曲键", 91: "静音键"}

# 循环获取当前时间,与now_time变量做时间戳做减法

while time.time() - now_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() - now_time, timeout))

input_keyevent(7200)

os.system("pause")

Python面向对象类形式

以"万物皆可归类"的思想, 先抽象化出一个类来,

类名一般建议用"名词", 所以我们命名为"KeyeventInputter",

代表按键事件输入器, 且一般要驼峰式(首字母大写)来规范类的命名。

养成良好的类的初始化(__init__)的习惯,

初始化过程中, 可以定义属性,self.keycode_dict。

定义方法(函数), input_keyevent函数。

类是一个抽象的事物, 必须实例化成具体的对象后,

才能进行调用, 所以我们实例化并命名成了k_obj, 表明是一个对象。

实例化成具体对象后, 对象就可以调用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):

now_time = time.time() # 获取当前时间戳,并保存到一个变量

# 循环获取当前时间,与now_time变量做时间戳做减法

while time.time() - now_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() - now_time, timeout))

k_obj = KeyeventInputter()

k_obj.input_keyevent(7200)

os.system()

运行方式与效果

确保Android设备通过USB线与电脑连接了,adb设备有效连接,

以上代码的3种实现形式都可以直接运行,比如保存为random_keyevent.py并放在桌面,

建议python random_keyevent.py运行,当然也可以双击运行。

运行效果如下:

c69430060e05c9af239ba1f16d2ba1b7.png

更多更好的原创文章,请访问官方网站:www.zipython.com

自拍教程(自动化测试Python教程,武散人编著)

原文链接:https://www.zipython.com/#/detail?id=635502eeeae5455c9ba064411cd5617d

也可关注“武散人”微信订阅号,随时接受文章推送。

《自拍教程50》Python_adb随机按键模拟2小时

标签:思想   input   语句   定义   面向   pytho   ESS   www   随机选择

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/zipython/p/12562210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值