👆對私有云感興趣能夠進入公衆號回覆「私有云」哦。android
今天咱們來聊一聊keyevent()
接口,這個接口不只能幫咱們實現一些操做,好比刪除輸入框的內容、返回上一頁等(下文會有詳細的示例介紹)。而且合理地使用keyevent()
接口,在一些狀況下還會讓咱們腳本的兼容性更好。web
在Airtest
中,keyevent()
接口是在設備上執行keyevent
按鍵事件,它包含2個參數:微信
keyname
– 平臺相關的按鍵名稱app**kwargs
– 平臺相關的參數kwargs
編輯器
能夠看出來這個接口傳入的參數都是與平臺相關的,它支持的平臺有:Android
, Windows
和 iOS
。flex
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
,咱們也能夠考慮直接使用Poco
的set_text
接口,將輸入框內容設置爲空字符串便可: poco("xxx").set_text("")
。
利用keyevent()接口實現返回上一個頁面
在不少狀況下,BACK按鈕
也能夠進行靈活使用。咱們常常在點開一個頁面,想返回上一個頁面時,會選擇按UI按鈕,但其實通常狀況下keyevent(「BACK」)
也能夠達到目的,簡單直接且兼容性又好:
在Android
中,咱們能夠經過keyevent("HOME")
來實現按下HOME鍵
的操做,而在Windows
中,咱們一樣能夠經過keyevent
接口發送一些按鍵響應。Android
的按鍵碼是基於ADB
的,而Airtest
的Windows
模塊則封裝使用了pywinauto
支持的按鍵碼,下圖展現了有效的keycode
:
關於Windows按鍵碼的更多詳情咱們能夠查閱pywinauto.keyboard
文檔的內容。(進入公衆號回覆Windows按鍵碼獲取文檔連接)。
在使用Windows的腳本中,若是咱們想使用刪除鍵,能夠把表明刪除鍵的keycode
傳入到keyevent()
接口中:
# 注意Windows平臺下的按鍵碼須要加上括號{}
keyevent("{DEL}")
利用keyevent()接口實現全選
咱們再舉一個Windows
平臺下應用keyevent()
接口的例子--全選:
# 在pywinauto中,符號^也表明了CTRL鍵,所以^a即爲全選(Ctrl+A)
keyevent("^a")
iOS設備如今暫時 只支持 HOME
按鍵的keyevent
。
keyevent("HOME")
本文分享自微信公衆號 - AirtestProject(AirtestProject)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。