Appium+python 使用 press_keycode 如何輸入大寫字母


背景:在做自動化測試項目時,需要在文本框中輸入一串數字和字母組合的字符串(注:此頁面為webview無法使用send_keys方法)

要使用send_keys方法首先要知道鍵盤字符對應的數值,這個可以在網上百度下,我把相關的對應關系已邏列到了下邊,從以下對應

關系可知大寫字母A和小字字母a對應的數值都是29, 在使用press_keycode(29) 時,文本框中輸出的是小寫的a,那如何輸入大寫的A呢?

分析: 查看press_keycode函數說明: def press_keycode(self, keycode, metastate=None, flags=None)

:Args:

- keycode - the keycode to be sent to the device   發送到設備的鍵值編碼
- metastate - meta information about the keycode being sent   將被發送的元信息
- flags - the set of key event flags  設置的按鍵事件標記

我們通過鍵盤正常輸入大寫字母的操作方式 有三種 1,按下左側shift鍵+字母   2. 按下右側shift鍵+字母  3.按下caps_lock大小寫鎖定鍵輸入字符

方法:我們以采用每一個方法為例輸入大寫字母A 

依次輸入參數1輸入字母A對應的數值 29  ,參數2 將元信息左shift 開關打開,參數3 模擬輸入按下左shift鍵

(注:'META_SHIFT_LEFT_ON':64 'KEYCODE_SHIFT_LEFT':59  )

press_keycode(29,64,59)

 心得:由此方法可知,press_keycode 是可以模擬鍵盤的組如輸入的如shifte+鍵盤,ctrl+鍵盤等等,需要與 META_鍵_ON 同時運用。     

 

def getMobileKey():
key={'0':7,'1':8,'2':9,'3':10,'4':11,'5':12,'6':13,'7':14,'8':15,'9':16,
'A':29,'B':30,'C':31,'D':32,'E':33,'F':34,'G':35,'H':36,'I':37,'J':38,
'K':39,'L':40,'M':41,'N':42,'O':43,'P':44,'Q':45,'R':46,'S':47,'T':48,
'U':49,'V':50,'W':51,'X':52,'Y':53,'Z':54,
'a':29,'b':30,'c':31,'d':32,'e':33,'f':34,'g':35,'h':36,'i':37,'j':38,
'k':39,'l':40,'m':41,'n':42,'o':43,'p':44,'q':45,'r':46,'s':47,'t':48,
'u':49,'v':50,'w':51,'x':52,'y':53,'z':54,
'META_ALT_LEFT_ON':16,
'META_ALT_MASK':50,
'META_ALT_ON':2,
'META_ALT_RIGHT_ON':32,
'META_CAPS_LOCK_ON':1048576,
'META_CTRL_LEFT_ON': 8192,
'META_CTRL_MASK':28672,
'META_CTRL_ON':4096,
'META_CTRL_RIGHT_ON':16384,
'META_FUNCTION_ON':8,
'META_META_LEFT_ON':131072,
'META_META_MASK':458752,
'META_META_ON':65536,
'META_META_RIGHT_ON':262144,
'META_NUM_LOCK_ON':2097152,
'META_SCROLL_LOCK_ON':4194304,
'META_SHIFT_LEFT_ON':64,
'META_SHIFT_MASK':193,
'META_SHIFT_ON':1,
'META_SHIFT_RIGHT_ON':128,
'META_SYM_ON':4,
'KEYCODE_APOSTROPHE':75,
'KEYCODE_AT':77,
'KEYCODE_BACKSLASH':73,
'KEYCODE_COMMA':55,
'KEYCODE_EQUALS':70,
'KEYCODE_GRAVE':68,
'KEYCODE_LEFT_BRACKET':71,
'KEYCODE_MINUS':69,
'KEYCODE_PERIOD':56,
'KEYCODE_PLUS':81,
'KEYCODE_POUND':18,
'KEYCODE_RIGHT_BRACKET':72,
'KEYCODE_SEMICOLON':74,
'KEYCODE_SLASH':76,
'KEYCODE_STAR':17,
'KEYCODE_SPACE':62,
'KEYCODE_TAB':61,
'KEYCODE_ENTER':66,
'KEYCODE_ESCAPE':111,
'KEYCODE_CAPS_LOCK':115,
'KEYCODE_CLEAR':28,
'KEYCODE_PAGE_DOWN':93,
'KEYCODE_PAGE_UP':92,
'KEYCODE_SCROLL_LOCK':116,
'KEYCODE_MOVE_END':123,
'KEYCODE_MOVE_HOME':122,
'KEYCODE_INSERT':124,
'KEYCODE_SHIFT_LEFT':59,
'KEYCODE_SHIFT_RIGHT':60,
'KEYCODE_F1':131,
'KEYCODE_F2':132,
'KEYCODE_F3':133,
'KEYCODE_F4':134,
'KEYCODE_F5':135,
'KEYCODE_F6':136,
'KEYCODE_F7':137,
'KEYCODE_F8':138,
'KEYCODE_F9':139,
'KEYCODE_F10':140,
'KEYCODE_F11':141,
'KEYCODE_F12':142,
'KEYCODE_BACK':4,
'KEYCODE_CALL':5,
'KEYCODE_ENDCALL':6,
'KEYCODE_CAMERA':27,
'KEYCODE_FOCUS':80,
'KEYCODE_VOLUME_UP':24,
'KEYCODE_VOLUME_DOWN':25,
'KEYCODE_VOLUME_MUTE':164,
'KEYCODE_MENU':82,
'KEYCODE_HOME':3,
'KEYCODE_POWER':26,
'KEYCODE_SEARCH':84,
'KEYCODE_NOTIFICATION':83,
'KEYCODE_NUM':78,
'KEYCODE_SYM':63,
'KEYCODE_SETTINGS':176,
'KEYCODE_DEL':67,
'KEYCODE_FORWARD_DEL':112,
'KEYCODE_NUMPAD_0':144,
'KEYCODE_NUMPAD_1':145,
'KEYCODE_NUMPAD_2':146,
'KEYCODE_NUMPAD_3':147,
'KEYCODE_NUMPAD_4':148,
'KEYCODE_NUMPAD_5':149,
'KEYCODE_NUMPAD_6':150,
'KEYCODE_NUMPAD_7':151,
'KEYCODE_NUMPAD_8':152,
'KEYCODE_NUMPAD_9':153,
'KEYCODE_NUMPAD_ADD':157,
'KEYCODE_NUMPAD_COMMA':159,
'KEYCODE_NUMPAD_DIVIDE':154,
'KEYCODE_NUMPAD_DOT':158,
'KEYCODE_NUMPAD_EQUALS':161,
'KEYCODE_NUMPAD_LEFT_PAREN':162,
'KEYCODE_NUMPAD_MULTIPLY':155,
'KEYCODE_NUMPAD_RIGHT_PAREN':163,
'KEYCODE_NUMPAD_SUBTRACT':156,
'KEYCODE_NUMPAD_ENTER':160,
'KEYCODE_NUM_LOCK':143,
'KEYCODE_MEDIA_FAST_FORWARD':90,
'KEYCODE_MEDIA_NEXT':87,
'KEYCODE_MEDIA_PAUSE':127,
'KEYCODE_MEDIA_PLAY':126,
'KEYCODE_MEDIA_PLAY_PAUSE':85,
'KEYCODE_MEDIA_PREVIOUS':88,
'KEYCODE_MEDIA_RECORD':130,
'KEYCODE_MEDIA_REWIND':89,
'KEYCODE_MEDIA_STOP':86,
}
return key


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM