当前位置: 首页 > news >正文

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 里面的功能。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

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

1. 前言 最近有收到同学们的一些提问,使用Airtest的 text 接口,发现在部分模拟器上, text 无法输入中文,不知道该怎么处理。 今天我们就输入这个小问题,来详细聊一下。 2. Airtest的输入法简介 对于Android设备来说…...

从农夫山泉家族任命,看“食企二代”的接班与传承

本文转载自产业科技 农夫山泉再次引发舆论关注,起因是一则人事任命消息。 市场消息称,农夫山泉对区域及人员进行了调整,其总部所在地浙江省被划分为四个区域,在以往浙南、浙北基础上多了浙西大区以及杭州大区,其中农…...

JavaScript启动本地应用程序

JavaScript调起本地应用程序 以下内容,自定义部分我也还未经过实际验证,酌情查看。 文章目录 JavaScript调起本地应用程序确定协议调用协议传参自定义写入协议获取参数 在浏览器中通过 JavaScript调起本地应用程序的一个可行方法就是 通过协议调起。 …...

软件工程理论与实践 (吕云翔)第十四章 软件维护与软件工程管理课后习题与解析

第十四章 软件维护与软件工程管理 1.判断题 (1)代码行技术是比较简单的定量估算软件规模的方法。(√) (2)功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。(√) &#…...

Flutter 桌面应用开发之读写Windows注册表

文章目录 需求来源Windows查询Windows版本号方法1. 如何查看Windows版本号2. Windows开发如何通过代码查询Windows版本号(1) 使用C#代码:(2) 使用VB.NET代码 3.通过注册表查看Windows版本信息 Flutter查询Windows版本号方法依赖库支持平台实现步骤1. 在pubspec.yaml…...

【Java Spring】SpringBoot 日志系统

文章目录 一、Spring Boot 日志系统1.1 Spring Boot 日志框架1.2 自定义日志打印1.3 日志级别设置1.4 日志持久化1.5 lombok 简化日志输出 一、Spring Boot 日志系统 1.1 Spring Boot 日志框架 SLF4J 和 logback都是spring boot内置的日志框架,开发者只负责调用对…...

Rust UI开发(四):iced中如何添加菜单栏(串口调试助手)

注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 这是一个系列博文,本文是第四篇,前三篇链接: 1、Rust UI开发(一):使用iced构建UI时…...

P19 C++ 构造函数的成员初始化列表

目录 前言 01 如果不用成员列表如何初始化变量 02 成员列表初始化 03 为什么要使用成员列表初始化呢? 04 案例代码 前言 本期我们聊聊构造函数初始化列表。 你应该经常使用成员初始化列表,如果你不喜欢这种代码风格,建议你还是慢慢习惯吧…...

acwing算法基础之数学知识--Nim游戏和集合Nim游戏

目录 1 基础知识2 模板3 工程化 1 基础知识 (一) Nim游戏: n n n堆物品,每堆有 a i a_i ai​个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。取走最后一个物品的人获胜。 结论:如果这n…...

大数据Doris(二十八):Routine Load查看和修改作业

文章目录 Routine Load查看和修改作业 一、查看导入作业状态...

顺序表总结

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 🌤️arraylist的简…...

flutter 文本不随系统设置而改变大小[最全的整理]

文本不随系统设置而改变大小[四] 前言方案十九:使用LayoutBuilder和RichText方案二十:使用Transform.scale方案二十一:使用自定义文本缩放因子方案二十二:使用SingleChildScrollView方案二十三:使用FittedBox方案二十四…...

python -opencv 图像锐化

python -opencv 图像锐化 图像锐化其实,是一种增强图片对比度的技术,我们可以通过计算图像的导数,把导数绝对值数值大于零的数值加回原图像,通过这种方法,可以增强图像的对比度。 实现代码如下: import c…...

数字电源为什么一般用DSP控制,而不能用普通的单片机?

数字电源为什么一般用DSP控制,而不能用普通的单片机? 首先你要清楚,数字电源需要一个芯片具备什么功能? 1 能发PWM波 ,并且具备保护关断功能; 电源对PWM发波 要求很高,精度要ns级甚至ps级的&…...

个人投资白银收益怎么样?

个人投资白银是可以带来丰厚的收益,但收益的具体情况取决于多种因素。以下是一些明确的答案和举例,帮助投资者更好地理解个人投资白银的收益情况。 白银市场的价格波动是决定投资收益的主要因素之一,白银价格受全球经济形势、地缘局势风险、…...

代码随想录算法训练营 ---第四十五天

前言: 昨天的题做过之后,今天的题基本上都很简单,但是要注重一下细节。 第一题: 简介: 动态规划五部曲: 1.确定dp数组的含义 dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法 2.确定dp…...

【密码学】【多方安全计算】不经意传输(Oblivious Transfer,OT)

文章目录 不经意传输(oblivious transfer)定义不经意传输的实例(1 out 2,二选一不经意传输)基于RSA的1 out 2 不经意传输疑问 不经意传输(oblivious transfer)定义 不经意传输(obli…...

STL常用算法-C++

概述&#xff1a; 算法主要是由头文件 <algorithm> <functional> <numeric> 组成。<algorithm> 是所有 STL 头文件中最大的一个&#xff0c;范围涉及是比较、交换、查找、遍历操作、复制、修改等等。<functional> 定义了一些模板类&#xff0c;…...

一、Lua基础

文章目录 一、Lua是什么二、Lua特性&#xff08;一&#xff09;轻量级&#xff08;二&#xff09;可扩展&#xff08;三&#xff09;其它特性 三、Lua安装四、Lua应用 看到评论说&#xff0c;C让我见识了语言的严谨与缜密&#xff0c;lua让我见识到了语言的精巧与创新&#xff…...

vue3 webSocket 封装及使用

vue3 webSocket 封装及使用 封装 import { ref, onUnmounted } from vue; interface SocketOptions {heartbeatInterval?: number;reconnectInterval?: number;maxReconnectAttempts?: number; }class Socket {url: string;ws: WebSocket | null null;opts: SocketOption…...

聊聊C语言-满汉全席的第一道原料

吃完第一只螃蟹&#xff0c;有兴趣的读者可能就好奇这只螃蟹原料的组成以便自己来制作大闸蟹。毕竟别人的永远是别人的&#xff0c;只有自己掌握了才是自己的。接下来我们就慢慢的C语言编程时间的原料一一介绍给大家&#xff0c;这样大家不仅能制作大闸蟹&#xff0c;自己做满汉…...

微信小程序的校园快递代取系统

目录同行可拿货,招校园代理 ,本人源头供货商微信小程序校园快递代取系统功能分析用户端功能配送员端功能后台管理功能扩展功能项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 微信小程序…...

目标分解效率提升300%的关键:动态权重分配算法(已开源v2.1,支持LangChain/AutoGen无缝集成)

第一章&#xff1a;AIAgent架构中的目标分解策略 2026奇点智能技术大会(https://ml-summit.org) 在复杂任务驱动的AI Agent系统中&#xff0c;目标分解是实现自主规划与协同执行的核心前置环节。它并非简单地将顶层目标切分为子任务&#xff0c;而是需结合领域知识、资源约束、…...

网络协议面试突击:5分钟搞懂IP、ARP、RARP、ICMP、IGMP的区别与应用场景

网络协议面试突击&#xff1a;5分钟搞懂IP、ARP、RARP、ICMP、IGMP的区别与应用场景 在技术面试中&#xff0c;网络协议相关的问题几乎从不缺席。尤其是网络层协议&#xff0c;它们构成了互联网通信的基础骨架。对于求职者来说&#xff0c;清晰理解IP、ARP、RARP、ICMP和IGMP这…...

图像自回归生成(Auto-regressive image generation)实战学习(五)

相关项目下载链接 本节内容详细解析基于 Transformer 的图像补丁令牌预测与生成。这份代码是适配 PatchAutoEncoderBSQ 二值量化模块的自回归模型实现&#xff0c;核心是完成图像补丁整数令牌的下一个令牌预测&#xff0c;并支持从空序列开始的逐令牌自回归生成。最终能实现图…...

避坑指南:STM32CUBEMX串口配置常见问题及解决方案(USART/printf重定向)

STM32CubeMX串口开发实战&#xff1a;从原理到调试的完整避坑手册 第一次在STM32CubeMX里配置串口时&#xff0c;我盯着那个115200的波特率数值发呆了十分钟——这个看似简单的数字背后&#xff0c;隐藏着多少新手会踩的坑&#xff1f;从时钟树配置到DMA缓冲区&#xff0c;从p…...

2026 年AI Agent面试题及答案Top30

智能体人工智能正在各行各业迅速普及,许多新兴公司都在寻找这方面的专家。本文收录了一些来自初级和中级职位面试的真实问题,其中一些是我自己设计的,另一些则旨在帮助读者对该领域有一个大致的了解。 请记住,在正式面试中,你可能会被要求先完成一项实践练习。你也可能会被…...

2026国内AI镜像网站全景解析:技术、选型、合规与实战指南

2026年,AI大模型已成为开发者、内容创作者与企业运营的标配生产力工具,但ChatGPT、Gemini、Claude等海外顶尖模型仍面临国内访问壁垒、网络不稳定、支付繁琐等现实问题。在此背景下,国内AI镜像网站凭借“国内直连、一站式聚合、低门槛使用”的核心优势,成为行业刚需,相关关…...

Autosar MCAL开发避坑指南:EB配置Icu模块时,关于EMIOS时钟、中断与通道选择的三个关键决策点

Autosar MCAL实战&#xff1a;EMIOS时钟分频与ICU通道配置的三大核心策略 在汽车电子控制单元(ECU)开发中&#xff0c;精确捕获PWM信号是获取转速、位置等关键物理量的基础。我曾参与过多个基于Autosar的电机控制项目&#xff0c;发现约60%的Icu模块配置问题都源于EMIOS时钟设置…...

从球谐到六边形:CSR Mascon产品的技术演进与实战指南

1. 为什么我们需要告别球谐系数&#xff1f; 十年前我刚接触GRACE数据时&#xff0c;球谐系数是唯一的选择。但第一次用它分析青藏高原水储量变化时&#xff0c;我遇到了令人崩溃的"条纹马赛克"——这就是著名的南北条带误差。球谐系数就像用乐高积木搭房子&#xff…...