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

Android终端(车载,手机)等,

需要考虑进行随意进行各类按键(车载方向盘按键,手机硬按键)的操作,

测试系统对按键事件的响应稳定性,一般测试2小时。

准备阶段

一般是用adb shell input keyevent + keyCode 来模拟按键事件,

比如adb shell input keyevent 24 可以模拟“音量加键”,

以下是比较常用的几个按键的键值表。

table th:first-of-type {
width: 100px;
}

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面向对象类形式
  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

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

原文地址:https://www.cnblogs.com/zipython/p/12562210.html

时间: 2024-11-05 21:41:34

《自拍教程50》Python_adb随机按键模拟2小时的相关文章

《自拍教程53》Python_adb运行tcpdump工具

本篇文章与上一篇:Python_adb运行shell脚本类似, 上一篇主要的技术点是讲shell等文本文件,"隐藏"在Python代码里; 本篇文章主要是讲,如何将tcpdump这类二进制可执行文件, "隐藏"到Python代码里去. ::: story Android手机具备在线功能的应用程序,如果出现App无法连接网络, 或者网络异常等问题,开发一般需要测试同学抓包; 还有比如Android手机 流媒体协议(HTTP,HTTP Live, RTSP)测试等,开发

远程控制之鼠标、按键模拟

做远程控制相关软件(远程办公.远程教育.远程协助等)时,鼠标.按键模拟必不可少.在windows环境下,windows API提供的两个方法可以很方便的完成鼠标.按键的模拟:mouse_event.keybd_event.模拟鼠标按键单击时,首先要计算鼠标位置X.Y(使用ClientToScreen),并把被控端鼠标位置移到X.Y位置,即鼠标Move事件(SetCursorPos),之后使用mouse_event来模拟需要执行的鼠标行为,主要为按下.弹起.按键的模拟主要是键的按下与弹起. 鼠标模

Excel动画教程50例(一)

Excel动画教程50例(一) 1.自动筛选 2.在Excel中字符替换 3.在Excel中冻结行列标题 4.在Excel中为导入外部数据 5.在Excel中行列快速转换 6.共享Excel工作簿 7.在Excel中添加说明文字 8.在Excel中数据分列整理 9.在Excel中数据合并 10.在Excel中添加常用文件夹 11.在Excel中添加多个视图 12.在Excel中设置打印区域 13.在Excel中录制“宏” 14.在Excel中建立图表 15.在Excel中获取网络数据

Excel动画教程50例(三)

Excel动画教程50例(三) 31.Excel自定输入数据下拉列表 32.Excel正确输入身份证号码 33.Excel数据排序操作 34.Excel数据表格中如何将姓名信息按笔画排列 35.Excel数据格式设置 37.Excel内置序列批量填充 38.Excel模版的保存和调用 39.Excel监视窗口 40.Excel中行列隐藏操作 41.Excel工作簿加密保存 42.Excel公式引用方式转换 43.Excel中特殊符号的输入 44.Excel中文日期格式 45.Excel工作表的移

获取一个1~50的随机不重复数组

// 获取一个1~50的随机不重复数组// Math.ceil()用于向上取整 Math.floor()用于向下取整 Math.round()用于四舍五入取整数var arr = [];var number = 50;for(var i=1;i<=number;i++){ arr.push(i);}console.log(arr);var result = [];for(var j=number-1;j>=0;j--){ var rand = Math.ceil(Math.random()*j

《自拍教程56》Python_批量安装卸载1000个apk

接上2篇案例:Python_批量下载1000个apk, Python_批量验证1000个apk, 都下载完了, 也验证了下载文件的版本号和MD5后,就要开始批量安装了, 然后开始尝试运行打开这个app, 做最基本的功能检点,最后就要考虑卸载App了. 本篇内容主要介绍如何用Python来批量实现安装apk,卸载apk. 备注: 一个手机不可能同时安装1000个apk,需要考虑每50-100个作为一组,进行安装,验证后卸载测试. 准备阶段 adb install -d -r XXX.apk 是安装

Linux_arm驱动之按键模拟脉冲实现定时器的精确计时

http://wenku.baidu.com/link?url=-9_IHk-7BFRSAxPAeutaQ8Ifhs0Rs9Qg3yAG9LxsqYqRauQRBwjVJ_xnmQ6R-CKbwVDSVmbr4vDJcDyUpbj_Y2RD75J1iLjQonsHywjECRW [cpp] view plaincopy /***************************************************************** 内核驱动部分button_ker.c ***

将程序变成system app 实现home、back、menu等按键模拟

1.使一个程序成为系统程序 我们必须在manifest 中配置android:sharedUserId="android.uid.system" <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.flyaudio.floatwindows" android:versionCode="1" android:sh

【BBC micro:bit基础教程】03-micro:bit控制模拟舵机

[所需材料] BBC micro:bit 主板 x 1 Micro USB 线   x 1 能容纳2节7号(AAA)电池的电池盒 x 1 7号(AAA)电池 x 2 模拟舵机 x 1 鳄鱼夹 x 3 3条公对公连接线 [电路接线步骤] 断掉micro:bit与电脑和电池的连接,保证micro:bit处于非供电状态. 如上图所示进行接线: 舵机棕色的是GND,接到micro:bit的 GND 引脚. 舵机红色的是电源Power,接到micro:bit的3V引脚. 舵机橙色的是信号线,接到micro