1. 程式人生 > 程式設計 >Python 隨機按鍵模擬2小時

Python 隨機按鍵模擬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) 常量
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鍵",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 秒...,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鍵",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 秒...,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 隨機按鍵模擬2小時的詳細內容,更多關於Python 隨機按鍵模擬的資料請關注我們其它相關文章!