Airtest遇到模擬器無法輸入中文的情況該如何處理?

此文章來源於項目官方公衆號:“AirtestProject”
版權聲明:允許轉載,但轉載必須保留原鏈接;請勿用作商業或者非法用途

1. 前言

最近有收到同學們的一些提問,使用Airtest的 text 接口,發現在部分模擬器上, text 無法輸入中文,不知道該怎麼處理。

今天我們就輸入這個小問題,來詳細聊一下。

2. Airtest的輸入法簡介

對於Android設備來說,Airtest的輸入功能,由 Yosemite.apk 提供。有了這個apk,就可以支持我們在Android設備上輸入中文,而不是侷限於只能輸入英文字母的 adb input text

所以在調用Airtest的 text 接口之前,請務必在Android設備上安裝好 Yosemite.apk

image

3.在部分特殊設備上無法輸入中文

也有一些情況,即使我們安裝好了 Yosemite.apk ,使用 text 接口進行輸入時,卻只能輸入英文,沒法輸入中文,我們以mumu12模擬器爲例:

在給mumu12輸入中文的時候,出現了1個報錯:

airtest.core.error.AdbShellError: stdout[b''] stderr[b"\r\nException
occurred while executing 'text':\r\njava.lang.NullPointerException:
Attempt to get length of null array\r\n\tatcom.android.server.input.InputShellCommand.sendText(InputShellCommand.java:284)\r\n\tat 
com.android.server.input.InputShellCommand.runText(InputShellCommand.java:256)\r\n\tat
com.android.server.input.InputShellCommand.onCommand(InputShellCommand.java:197)\r\n\tat com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)\r\n\tat
android.os.ShellCommand.exec(ShellCommand.java:38)\r\n\tat com.android.server.input.InputManagerService.onShellCommand(InputManagerService.java:3591)\r\n\tat
android.os.Binder.shellCommand(Binder.java:950)\r\n\tat
android.os.Binder.onTransact(Binder.java:834)\r\n\tat
android.hardware.input.IInputManager$Stub.onTransact(IInputManager.java:1167)\r\n\tat android.os.Binder.execTransactInternal(Binder.java:1184)\r\n\tat android.os.Binder.execTransact(Binder.java:1143)\r\n"]

這是因爲模擬器沒有真正把 Yosemite 輸入法調起來導致的,我們可以到 Yosemite.apk 裏面,找到輸入法,啓用 Yosemite 輸入法,之後關閉掉其餘的輸入法:

image

之後再通過下述腳本的方式,給設備輸入中文文本:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
auto_setup(__file__)

shell('am broadcast -a INPUT_TEXT --es text "大話西遊"')

image

4. 小結

今天主要講述了,在部分特殊Android設備裏,遇到 text 輸入接口無法完成的一些輸入事情的時候,我們還可以通過怎樣的方式來實現我們的輸入效果,本質還是調用了 Yosemite.apk 裏面的功能。

如果還有其他關於輸入感興趣的問題,歡迎給我們私信/留言。


AirtestIDE下載:airtest.netease.com/
Airtest 教程官網:airtest.doc.io.netease.com/
搭建企業私有云服務:airlab.163.com/b2b

官方答疑 Q 羣:117973773

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章