Python 隨機(jī)按鍵模擬2小時(shí)
案例故事:
Android終端(車載,手機(jī))等,
需要模擬進(jìn)行隨意進(jìn)行各類按鍵(車載方向盤按鍵,手機(jī)硬按鍵)的操作,
測(cè)試系統(tǒng)對(duì)隨機(jī)按鍵事件的響應(yīng)穩(wěn)定性,一般測(cè)試2小時(shí)。
準(zhǔn)備階段
一般是用adb shell input keyevent + KeyCode 來模擬按鍵事件。
比如adb shell input keyevent 24 可以模擬“音量加鍵”,
以下是比較常用的幾個(gè)按鍵的鍵值表。
| KeyCode | 釋義 |
|---|---|
| 3 | Home鍵 |
| 4 | 返回鍵 |
| 5 | 電話撥號(hào)鍵 |
| 24 | 音量加鍵 |
| 25 | 音量減鍵 |
| 26 | 電源鍵 |
| 27 | 照相機(jī)啟動(dòng)鍵 |
| 87 | 多媒體下一曲鍵 |
| 88 | 多媒體上一曲鍵 |
| 91 | 音量靜音鍵 |
Python批處理腳本形式
批量處理腳本的特點(diǎn)是:批量順序執(zhí)行語句
# coding=utf-8
import os
import time
import random
TIMEOUT= 7200 # 2小時(shí)(7200s) 常量
once_time = time.time() # 獲取當(dāng)前時(shí)間戳,并保存到一個(gè)變量
keycode_dict = {3: "HOME鍵", 4: "返回鍵", 5: "電話撥號(hào)鍵", 24: "音量加鍵",
25: "音量減鍵", 26: "電源鍵", 27: "照相機(jī)啟動(dòng)鍵", 87: "下一曲鍵",
88: "上一曲鍵", 91: "靜音鍵"}
# 循環(huán)獲取當(dāng)前時(shí)間,與once_time變量做時(shí)間戳做減法
while time.time() - once_time <= TIMEOUT:
# 隨機(jī)選擇字典的某個(gè)“鍵”
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,再進(jìn)行下一次按鍵模擬
print("已經(jīng)進(jìn)行了 %d 秒..., 一共需要測(cè)試 %d 秒" % (time.time() - once_time, TIMEOUT))
os.system("pause")
Python面向過程函數(shù)形式
看哪些代碼塊,可以組成一個(gè)具體的功能,
這個(gè)案例,可以用input_keyevent(), 代表輸入按鍵事件的功能函數(shù),
這個(gè)函數(shù)可以接收參數(shù)輸入,可以指定輸入多久的按鍵事件。
# coding=utf-8
import os
import time
import random
def input_keyevent(timeout):
once_time = time.time() # 獲取當(dāng)前時(shí)間戳,并保存到一個(gè)變量
keycode_dict = {3: "HOME鍵", 4: "返回鍵", 5: "電話撥號(hào)鍵", 24: "音量加鍵",
25: "音量減鍵", 26: "電源鍵", 27: "照相機(jī)啟動(dòng)鍵", 87: "下一曲鍵",
88: "上一曲鍵", 91: "靜音鍵"}
# 循環(huán)獲取當(dāng)前時(shí)間,與once_time變量做時(shí)間戳做減法
while time.time() - once_time <= timeout:
# 隨機(jī)選擇字典的某個(gè)“鍵”
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,再進(jìn)行下一次按鍵模擬
print("已經(jīng)進(jìn)行了 %d 秒..., 一共需要測(cè)試 %d 秒" % (time.time() - once_time, timeout))
input_keyevent(7200)
os.system("pause")
Python面向?qū)ο箢愋问?br />
1.以"萬物皆可歸類"的思想, 先抽象化出一個(gè)類來,類名一般建議用"名詞", 所以我們命名為"KeyeventInputter",代表按鍵事件輸入器, 且一般要駝峰式(首字母大寫)來規(guī)范類的命名。
2.養(yǎng)成良好的類的初始化(__init__)的習(xí)慣,初始化過程中, 可以定義屬性,self.keycode_dict。
3.定義方法(函數(shù)), input_keyevent函數(shù)。
4.類是一個(gè)抽象的事物, 必須實(shí)例化成具體的對(duì)象后,才能進(jìn)行調(diào)用, 所以我們實(shí)例化并命名成了k_obj, 表明是一個(gè)對(duì)象。
5.實(shí)例化成具體對(duì)象后, 對(duì)象就可以調(diào)用input_keyevent這個(gè)函數(shù)了。
# coding=utf-8
import os
import time
import random
class KeyeventInputter():
def __init__(self):
self.keycode_dict = {3: "HOME鍵", 4: "返回鍵", 5: "電話撥號(hào)鍵", 24: "音量加鍵",
25: "音量減鍵", 26: "電源鍵", 27: "照相機(jī)啟動(dòng)鍵", 87: "下一曲鍵",
88: "上一曲鍵", 91: "靜音鍵"}
def input_keyevent(self, timeout):
once_time = time.time() # 獲取當(dāng)前時(shí)間戳,并保存到一個(gè)變量
# 循環(huán)獲取當(dāng)前時(shí)間,與once_time變量做時(shí)間戳做減法
while time.time() - once_time <= timeout:
# 隨機(jī)選擇字典的某個(gè)“鍵”
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,再進(jìn)行下一次按鍵模擬
print("已經(jīng)進(jìn)行了 %d 秒..., 一共需要測(cè)試 %d 秒" % (time.time() - once_time, timeout))
k_obj = KeyeventInputter()
k_obj.input_keyevent(7200)
os.system("pause")
運(yùn)行方式與效果
確保Android設(shè)備通過USB線與電腦連接了,adb設(shè)備有效連接,以上代碼的3種實(shí)現(xiàn)形式都可以直接運(yùn)行,比如保存為random_keyevent.py并放在桌面,建議python random_keyevent.py運(yùn)行,當(dāng)然也可以雙擊運(yùn)行。
運(yùn)行效果如下:

以上就是Python 隨機(jī)按鍵模擬2小時(shí)的詳細(xì)內(nèi)容,更多關(guān)于Python 隨機(jī)按鍵模擬的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python 實(shí)現(xiàn)鍵盤鼠標(biāo)按鍵模擬
- python實(shí)現(xiàn)模擬按鍵,自動(dòng)翻頁看u17漫畫
- Python實(shí)現(xiàn)windows下模擬按鍵和鼠標(biāo)點(diǎn)擊的方法
- python實(shí)現(xiàn)按鍵精靈找色點(diǎn)擊功能教程,使用pywin32和Pillow庫
- python中字典按鍵或鍵值排序的實(shí)現(xiàn)代碼
- python按鍵按住不放持續(xù)響應(yīng)的實(shí)例代碼
- python對(duì)綁定事件的鼠標(biāo)、按鍵的判斷實(shí)例
- Python中按鍵來獲取指定的值
- Python實(shí)現(xiàn)的字典排序操作示例【按鍵名key與鍵值value排序】
- Python實(shí)現(xiàn)對(duì)字典分別按鍵(key)和值(value)進(jìn)行排序的方法分析
- python 字典(dict)按鍵和值排序
- Python可跨平臺(tái)實(shí)現(xiàn)獲取按鍵的方法
相關(guān)文章
利用python檢查磁盤空間使用情況的代碼實(shí)現(xiàn)
本文將向讀者展示如何利用Python編寫自動(dòng)化腳本,以檢查磁盤空間使用情況,無論你是經(jīng)驗(yàn)豐富的系統(tǒng)管理員,還是對(duì)Python自動(dòng)化充滿興趣的開發(fā)者,本文都將為你提供實(shí)用的腳本示例和詳細(xì)的解析步驟,幫助你快速掌握磁盤空間監(jiān)控的自動(dòng)化方法,需要的朋友可以參考下2024-08-08
Spring Boot中使用IntelliJ IDEA插件EasyCode一鍵生成代碼詳細(xì)方法
這篇文章主要介紹了Spring Boot中使用IntelliJ IDEA插件EasyCode一鍵生成代碼詳細(xì)方法,需要的朋友可以參考下2020-03-03
pygame實(shí)現(xiàn)雷電游戲雛形開發(fā)
這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)雷電游戲開發(fā)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
python Tornado事件循環(huán)示例源碼解析
這篇文章主要為大家介紹了python Tornado事件循環(huán)示例源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
pytorch 模型的train模式與eval模式實(shí)例
今天小編就為大家分享一篇pytorch 模型的train模式與eval模式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02

