当前位置: 首页 > 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 里面的功能。

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

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

http://www.lryc.cn/news/246506.html

相关文章:

  • 从农夫山泉家族任命,看“食企二代”的接班与传承
  • JavaScript启动本地应用程序
  • 软件工程理论与实践 (吕云翔)第十四章 软件维护与软件工程管理课后习题与解析
  • Flutter 桌面应用开发之读写Windows注册表
  • 【Java Spring】SpringBoot 日志系统
  • Rust UI开发(四):iced中如何添加菜单栏(串口调试助手)
  • P19 C++ 构造函数的成员初始化列表
  • acwing算法基础之数学知识--Nim游戏和集合Nim游戏
  • 大数据Doris(二十八):Routine Load查看和修改作业
  • 顺序表总结
  • flutter 文本不随系统设置而改变大小[最全的整理]
  • python -opencv 图像锐化
  • 数字电源为什么一般用DSP控制,而不能用普通的单片机?
  • 个人投资白银收益怎么样?
  • 代码随想录算法训练营 ---第四十五天
  • 【密码学】【多方安全计算】不经意传输(Oblivious Transfer,OT)
  • STL常用算法-C++
  • 一、Lua基础
  • vue3 webSocket 封装及使用
  • 记录vscode常用插件集合(extensions)
  • 正则表达式详解
  • 【限时免费】20天拿下华为OD笔试之【双指针】2023Q1A-两数之和绝对值最小【欧弟算法】全网注释最详细分类最全的华为OD真题题解
  • expect脚本在自动化部署中的具体应用案例
  • 【Java+SQL Server】前后端连接小白教程
  • Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持
  • Web语言基础课程期末代做
  • Scanner常用知识点
  • uniapp页面使用多个echarts出现数据渲染错乱问题解决
  • PHP连接数据库 错误抑制 三元运算符 学习资料
  • 5G智慧工地整体解决方案:文件全文115页,附下载