自動化測試MonkeyRunner、adb shell向Android APP中自動輸入中文

來源:互聯網
上載者:User

在做一些Android自動化指令碼,比如向手機QQ中輸入中文聊天內容,由於使用Robotium、Appium等工具來做時,由於TX作了簽名校正的,所以登入不了QQ的。後來只能使用最傻的MonkeyRunner來做,不過它是完全類比人為點擊,而資料中文就很麻煩了。為此我們嘗試了多種方案,簡單分享一下:

1. 通過PC的剪貼簿與Android模擬器中共用來實現:先將要輸入的中文放到PC的剪貼簿中,再到Android模擬器中粘貼到QQ聊天輸入框中。其缺點是,很不穩定,有時候成功,有時候比較莫名的失敗。

2. adb shell input 命令可直接將字串輸入到Android應用的Input框中,但問題來了,它不支援unicode字元啊(僅支援ASICC字元)。於是,我根據網上資料找到了一個方法:使用unicode字元原樣輸出,然後再轉化為encoded字元。比如:https://github.com/bingwei/inputchineseviaadb,就實現了這樣的轉換,在app中複製到android的剪貼簿中,然後可以在QQ聊天框等地方粘貼就好了。當然這裡他這個gitlab項目中utils/inputunicode.py檔案有點小bug,對於python 2.x,需要在adb shell input後跟的string用encode(‘unicode-escape’)編碼。
這個種方式的速度不是很快,不過還是算不錯的,因為本來做UI自動化耽誤個一兩秒鐘也是可以接受的;我們最終就是採用了這種方案,目前運行下來是非常穩定的。

3. 使用一個外部REST伺服器,搞一個key-value對放到REST sever中,其中key是全英文的,而value中可以包含中文;然後通過adb shell input將key傳入到Andoid中,在Android中根據key去請求遠程REST API從而得到包含中文字元的Value。沒試過這種方法,不過應該是可行的;但其效率估計比第2中方法還要效率低下。

4. 一種專門為unicode做的IME,可以adb shell input輸入unicode,它幫你轉成中文之類的字元。沒真正嘗試過。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.