超詳細!各大平臺的keyevent()解析

👆對私有云感興趣能夠進入公衆號回覆「私有云」哦。android


01 前言


今天咱們來聊一聊keyevent()接口,這個接口不只能幫咱們實現一些操做,好比刪除輸入框的內容、返回上一頁等(下文會有詳細的示例介紹)。而且合理地使用keyevent()接口,在一些狀況下還會讓咱們腳本的兼容性更好。web


02 keyevent()接口介紹


Airtest中,keyevent()接口是在設備上執行keyevent按鍵事件,它包含2個參數:微信

  • keyname – 平臺相關的按鍵名稱app

  • **kwargs – 平臺相關的參數 kwargs編輯器

能夠看出來這個接口傳入的參數都是與平臺相關的,它支持的平臺有:AndroidWindows和 iOSflex


03 Android平臺下的keyevent()


Android的按鍵碼是基於ADB的,谷歌的Android按鍵碼文檔給咱們詳細介紹了keyevent()接口以及全部的按鍵碼(進入公衆號回覆Android按鍵碼獲取文檔連接或者自行上網搜索關鍵詞Android keyevent)。spa

在使用Android設備的腳本中,當咱們須要輸入一些指定的按鍵,例如點一下HOME鍵BACK鍵等,咱們能夠經過向keyevent()接口傳入keycode參數的方式來實現,例如:.net

  • 點一下HOME鍵--keyevent("HOME")3d

  • 點一下BACK鍵--keyevent("BACK")code

  • 點一下MENU鍵--keyevent("MENU")


另外,這些keycode還能夠用固定的數值來表明,如上面的例子咱們也能夠用下面的方式來表達:

  • 點一下HOME鍵--keyevent("3")

  • 點一下BACK鍵--keyevent("4")

  • 點一下MENU鍵--keyevent("82")

小知識拓展,在android平臺下,由於HOME鍵比較經常使用,因此airtest也封裝了一個home()接口來按下HOME鍵:

home()  # 至關於keyevent("HOME")
利用keyevent()接口實現刪除輸入框的內容

咱們以你們常常碰到的狀況--刪除輸入框的內容,來說解keyevent()接口的實際應用。

用戶在刪除一個輸入框內容時,會連續N次地去點擊刪除按鈕,所以在airtest腳本中想要實現「清空輸入框」內容的操做,須要寫一個循環連續運行N次keyevent操做:

for i in range(10):
keyevent("KEYCODE_DEL")

刪除鍵的固定數值爲「67」,因此示例代碼中的keyevent("KEYCODE_DEL")也能夠寫成keyevent("67")

這裏有一個拓展小知識,若是已經接入了Poco,咱們也能夠考慮直接使用Pocoset_text接口,將輸入框內容設置爲空字符串便可: poco("xxx").set_text("") 。

利用keyevent()接口實現返回上一個頁面

在不少狀況下,BACK按鈕也能夠進行靈活使用。咱們常常在點開一個頁面,想返回上一個頁面時,會選擇按UI按鈕,但其實通常狀況下keyevent(「BACK」)也能夠達到目的,簡單直接且兼容性又好:


04 Windows平臺下的keyevent()


Android中,咱們能夠經過keyevent("HOME")來實現按下HOME鍵的操做,而在Windows中,咱們一樣能夠經過keyevent接口發送一些按鍵響應。Android的按鍵碼是基於ADB的,而AirtestWindows模塊則封裝使用了pywinauto支持的按鍵碼,下圖展現了有效的keycode

關於Windows按鍵碼的更多詳情咱們能夠查閱pywinauto.keyboard文檔的內容。(進入公衆號回覆Windows按鍵碼獲取文檔連接)。

在使用Windows的腳本中,若是咱們想使用刪除鍵,能夠把表明刪除鍵的keycode傳入到keyevent()接口中:

# 注意Windows平臺下的按鍵碼須要加上括號{}
keyevent("{DEL}")
利用keyevent()接口實現全選

咱們再舉一個Windows平臺下應用keyevent()接口的例子--全選:

# pywinauto中,符號^也表明了CTRL鍵,所以^a即爲全選(Ctrl+A
keyevent("^a")


05 IOS平臺下的keyevent()


iOS設備如今暫時 只支持 HOME 按鍵的keyevent

keyevent("HOME")
往期精彩回顧
手把手教你學會文本輸入的text()接口
調用過程當中你必定遇到過的幾個問題
學會這些,你想怎麼touch就怎麼touch
喜歡就點個「 在看」唄


本文分享自微信公衆號 - AirtestProject(AirtestProject)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索