news 2026/4/23 11:33:19

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Airtest遇到模拟器无法输入中文的情况该如何处理?

1. 前言

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

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

2. Airtest的输入法简介

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

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

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 输入法,之后关闭掉其余的输入法:

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

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

4. 小结

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

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:03:43

FanControl步进速率智能散热配置指南:实战静音调校技巧

在追求极致散热性能与静音体验的平衡中,FanControl的步进速率参数扮演着关键角色。通过精准的风扇响应优化和噪音控制技巧,本文将为你提供一套完整的智能散热配置方案。 【免费下载链接】FanControl.Releases This is the release repository for Fan Co…

作者头像 李华
网站建设 2026/4/21 17:34:59

2025工业电流测量三大趋势,AT4V H00如何适配场景升级?

2025年,全球精密电流传感器市场正迎来高速增长期,预计到2030年将实现年均15%以上的复合增长率,中国市场增速更是领跑全球。新能源发电、工业自动化、新能源汽车等领域的快速扩张,推动工业电流测量需求从“基础数据采集”向“高精度…

作者头像 李华
网站建设 2026/4/18 1:26:39

强力FreeMarker在线测试工具:即刻解决模板调试难题的终极方案

强力FreeMarker在线测试工具:即刻解决模板调试难题的终极方案 【免费下载链接】freemarker-online-tester Apache Freemarker Online Tester: 是一个用于在线测试 Apache Freemarker 模板的 Web 应用程序。它可以帮助开发者快速测试 Freemarker 模板的语法和功能。适…

作者头像 李华
网站建设 2026/4/22 3:48:45

【普中DSP28335开发攻略】-- 第 22 章 I2C-EEPROM 实验

(1)实验平台:普中DSP28335开发板 前面我们已经介绍了 F28335 的 SPI 接口, 在串行通信中, SCI、 SPI、 I2C等应用是非常广泛的, 对于 F28335 这类高级处理器, 片内自然会集成 I2C 总线接口, 但通常我们不使…

作者头像 李华
网站建设 2026/4/18 0:44:43

22、实时系统进程调度与资源限制详解

实时系统进程调度与资源限制详解 1. 进程调度策略设置 在进程管理中,我们可以使用 sched_setscheduler 函数来设置调用进程的调度策略。以下是一个示例代码: struct sched_param sp = { .sched_priority = 1 }; int ret; ret = sched_setscheduler (0, SCHED_RR, &…

作者头像 李华