appium+python自動化39-adb shell輸入中文(ADBKeyBoard)

前言

上一篇提到「adb shell input textyoyo「 能夠經過adb 輸入英文的文本,因爲不支持unicode編碼,因此沒法輸入中文,github上有個國外的大神寫了個ADBKeyBoard輸入法的apk,完美支持unicode編碼,也能輸入中文和其它字符了python

ADBKeyBoard

1.ADBKeyBoard在github的源碼地址ADBKeyBoard github 地址,有興趣的能夠去看看,這裏我翻譯成中文文檔了android

2.ADBKeyBoard是一個虛擬鍵盤,它接收來自系統broadcast的命令,能夠使用ADB輸入文本內容,如下是adb 的input事件發生文本。
可是,不能使用此命令發送Unicode字符git

usage: input [text|keyevent] input text input keyevent 

以下這種是不支持的github

e.g.
adb shell input text '你好嗎' is not going to work.

3.ADBKeyBoard就是爲解決這個問題而專門開發的一個小工具,主要用於自動化測試方面。shell

使用方法

1.手機先安裝ADBKeyBoard.apk,(下載地址:QQ羣512200893羣文件可下載),使用adb指令安裝apk編輯器

adb install [本地電腦apk路徑]工具

2.打開設置-語言輸入法-默認輸入法,先關掉「硬件-物理鍵盤"這個選項(模擬器上通常默認是開啓的)測試

3.將ADBKeyBoard輸入法設置爲默認輸入法,這裏能夠直接用adb命令設置編碼

adb shell ime set com.android.adbkeyboard/.AdbIMEspa

也能夠手工去設置ADBKeyBoard輸入法爲默認輸入法

輸入中文

1.發送中文文本調用系統的broadcast,用到以下指令

adb shell am broadcast -a ADB_INPUT_TEXT --es msg '上海-悠悠'

其它的指令

  • 輸入中文文本

adb shell am broadcast -a ADB_INPUT_TEXT --es msg '上海-悠悠'

  • 發送 keyevent 事件 (67 = KEYCODE_DEL)

adb shell am broadcast -a ADB_INPUT_CODE --ei code 67

  • 發送編輯器動做 (2 = IME_ACTION_GO)

adb shell am broadcast -a ADB_EDITOR_CODE --ei code 2

  • 發送Unicode字符,To send 😸 Cat

adb shell am broadcast -a ADB_INPUT_CHARS --eia chars '128568,32,67,97,116'

adb設置輸入法相關指令

  • 經過adb切換到ADBKeyBoard輸入法 :

adb shell ime set com.android.adbkeyboard/.AdbIME

  • 切換回原虛擬鍵盤(如切到swype輸入法)

adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME

  • 檢查你的手機可用的虛擬鍵盤:

adb shell ime list -a

python代碼實現

1.用python實現adb輸入中文,封裝輸入方法

相關文章
相關標籤/搜索