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


前言

上一篇提到“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


免責聲明!

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



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