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

Android终端(车载,手机)等,
须要考虑进行随意进行各种按键(车载方向盘按键,手机硬按键)的操做,
测试系统对按键事件的响应稳定性,通常测试2小时。python


准备阶段

通常是用adb shell input keyevent + keyCode 来模拟按键事件,
好比adb shell input keyevent 24 能够模拟“音量加键”,
如下是比较经常使用的几个按键的键值表。shell

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(),
这个函数能够接收参数输入,能够指定输入多久的按键事件。dom

# 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面向对象类形式
  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):
        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运行,固然也能够双击运行。
运行效果以下:


函数

更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文连接:https://www.zipython.com/#/detail?id=635502eeeae5455c9ba064411cd5617d
也可关注“武散人”微信订阅号,随时接受文章推送。
测试

相关文章
相关标签/搜索