Airtest遇到模拟器无法输入中文的情况该如何处理?

简介: Airtest遇到模拟器无法输入中文的情况该如何处理?

1. 前言

最近有收到同学们的一些提问,使用Airtest的 text 接口,发现在部分模拟器上, text 无法输入中文,不知道该怎么处理。

今天我们就输入这个小问题,来详细聊一下。

2. Airtest的输入法简介

对于Android设备来说,Airtest的输入功能,由 Yosemite.apk 提供。有了这个apk,就可以支持我们在Android设备上输入中文,而不是局限于只能输入英文字母的 adb input text

所以在调用Airtest的 text 接口之前,请务必在Android设备上安装好 Yosemite.apk

image.png

3.在部分特殊设备上无法输入中文

也有一些情况,即使我们安装好了 Yosemite.apk ,使用 text 接口进行输入时,却只能输入英文,没法输入中文,我们以mumu12模拟器为例:

image.png

在给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.png

之后再通过下述脚本的方式,给设备输入中文文本:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
auto_setup(__file__)
shell('am broadcast -a INPUT_TEXT --es text "大话西游"')

image.png

4. 小结

今天主要讲述了,在部分特殊Android设备里,遇到 text 输入接口无法完成的一些输入事情的时候,我们还可以通过怎样的方式来实现我们的输入效果,本质还是调用了 Yosemite.apk 里面的功能。

如果还有其他关于输入感兴趣的问题,欢迎给我们私信/留言。

相关文章
|
6月前
|
Python
Python人生重开模拟器代码展示
本文主要是人生重开模拟器的代码演示
|
Web App开发 测试技术
Selenium+python之隐藏浏览器的“Chrome正在受到自动软件的控制“提示语
Selenium+python之隐藏浏览器的“Chrome正在受到自动软件的控制“提示语
456 0
|
5月前
|
编解码 机器人 关系型数据库
掌握计算机自动化:PyAutoGUI库详细教程(最全使用方法,每行代码都有注释,帮你解决与之有关的所有问题)
掌握计算机自动化:PyAutoGUI库详细教程(最全使用方法,每行代码都有注释,帮你解决与之有关的所有问题)
|
6月前
|
Java Windows Spring
IDEA中报错:因为在此系统上禁止运行脚本有关详细信息,请参阅...(图文解释 亲测已解决)
IDEA中报错:因为在此系统上禁止运行脚本有关详细信息,请参阅...(图文解释 亲测已解决)
724 0
|
Shell
安装程序的脚本中提示输入yes/no 是如何做到忽略大小写的?
安装程序的脚本中提示输入yes/no 是如何做到忽略大小写的?
112 0
|
Python
【问题解决】Pycharm、IDAE等乱码问题:运行输出窗口就正常显示,调试乱码的问题
【问题解决】Pycharm、IDAE等乱码问题:运行输出窗口就正常显示,调试乱码的问题
251 0
【问题解决】Pycharm、IDAE等乱码问题:运行输出窗口就正常显示,调试乱码的问题
|
文字识别 PyTorch TensorFlow
python捕获桌面文字信息
本次试验是因为女友的工作带着些客服性质,经常需要回复些重复性质的信息,他们的私域数据集中在企业微信,但是我没有办法去打通这个渠道,所以我就琢磨着能不能捕捉整个桌面的信息,然后解析出需要的数据。
916 0
|
搜索推荐 Unix Shell
如何用Airtest脚本切换手机的输入法
如何用Airtest脚本切换手机的输入法
394 0
|
安全 Shell Android开发
Airtest输入文本那点事
Airtest输入文本那点事
926 0
|
iOS开发 MacOS
MacOS 10.15: 修正typora无法输入问题
最近把系统更新到了10.15,发现 typora 没法输入了, 一开始以为是 typora 的 bug,慢慢坐等更新, 放了一个月,更新了 typora 推送的版本也无效。 这就没法接受了!!必须排查下~~
468 0