前言
上一篇提到“adb shell input textyoyo“ 可以通過adb 輸入英文的文本,由於不支持unicode編碼,所以無法輸入中文,github上有個國外的大神寫了個ADBKeyBoard輸入法的apk,完美支持unicode編碼,也能輸入中文和其它字符了
ADBKeyBoard
1.ADBKeyBoard在github的源碼地址ADBKeyBoard github 地址,有興趣的可以去看看,這里我翻譯成中文文檔了
2.ADBKeyBoard是一個虛擬鍵盤,它接收來自系統broadcast的命令,可以使用ADB輸入文本內容,以下是adb 的input事件發生文本。
但是,不能使用此命令發送Unicode字符
usage: input [text|keyevent]
input text
input keyevent
如下這種是不支持的
e.g.
adb shell input text '你好嗎'
is not going to work.
3.ADBKeyBoard就是為解決這個問題而專門開發的一個小工具,主要用於自動化測試方面。
使用方法
1.手機先安裝ADBKeyBoard.apk,(下載地址:QQ群512200893群文件可下載),使用adb指令安裝apk
adb install [本地電腦apk路徑]
2.打開設置-語言輸入法-默認輸入法,先關掉“硬件-物理鍵盤"這個選項(模擬器上一般默認是開啟的)
3.將ADBKeyBoard輸入法設置為默認輸入法,這里可以直接用adb命令設置
adb shell ime set com.android.adbkeyboard/.AdbIME
也可以手工去設置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輸入中文,封裝輸入方法
在學習過程中有遇到疑問的,可以appium+python QQ群交流:330467341