《自拍教程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
也可關注「武散人」微信訂閱號,隨時接受文章推送。
測試

相關文章
相關標籤/搜索