此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1.前言

阅读本文你将了解:

  • Airtest的专用输入法 Yosemite.apk
  • Airtest的 text 接口
  • 输入法的回车和搜索问题
  • 拓展:Poco的 set_text 接口

PS:本文重点说明Android设备输入文本的相关问题,iOS设备和网页的输入问题此文不展开讨论。

2. Airtest的专用输入法 Yosemite.apk

在Android平台下,Airtest配了一个专用的输入法 Yosemite.apk 。我们可以在Airtest库的这个路径下找到它:

当我们在Android设备上运行到输入文本的接口,比如 text 接口时,会自动启用这个 Yosemite 输入法来进行输入。(注意,如果是初次调用输入接口,则会先在该Android设备上自动安装该应用,再启用它来进行输入操作。)

1)没有软键盘的Yosemite输入法

在启用 Yosemite 输入法时,Android设备的底部会有一个输入法的提示条,并且该输入法不像常规的输入法那样,Yosemite输入法没有软键盘:

所以很多同学初次见到这个输入法的时候,都会感到疑惑。其实这是正常的。也有些同学会问,能不能去掉这个输入法的提示,目前暂时是不支持去掉的。

如果同学们遇到了 Yosemite 的底部提示,遮挡到手机应用按钮的情况,可以把具体机型、具体应用和按钮页面截图,提单给我们的开发者去核查和处理: https://airtest.netease.com/issue_create 。

2)如何切换输入法

那当Android设备启用 Yosemite 输入法时,我们就只能通过脚本来对设备进行输入,无法手工输入。

如果需要手工输入,可以在手机系统的输入法设置中,把输入法切换回系统输入法即可恢复。

如果同学们使用了我们的AirtestIDE,也可以使用它提供的 安卓手机助手功能 ,在手机助手中可以简单地点击鼠标来切换输入法:

3)能不能不使用Yosemite输入法

也有同学会觉得,这个输入法没有键盘,手动输入的时候还要切换到别的输入法,太麻烦了,那我能不能不使用 Yosemite 输入法呢?

其实是可以的,如果我们确定在测试脚本中,不会涉及任何文本输入的操作;或者是只需要输入英文,并且是以 adb shell input 的方式来进行输入的,我们可以不在手机上安装 Yosemite 输入法。

shell("input text 'hello world'")

我们也可以通过下述方式,在脚本中指定不使用 Yosemite 输入法:

from airtest.core.api import *
# 方式一
auto_setup(__file__,devices=["android:///?ime_method=ADBIME"])# 方式二
init_device("Android", ime_method="ADBIME")

3. Airtest的 text接口

那了解完输入法之后,我们来看下输入的接口。Airtest框架给我们提供的输入接口是 text 接口,在使用 text 接口之前,我们 必须先点击输入框,激活下输入光标 ,可以用图像点击、控件点击,均可,只要保证输入框的输入光标已经激活,我们就可以使用 text 接口进行输入。

1)text 接口默认的回车操作

text 接口有一个默认参数 enter=True,会在输入完毕后自动按一下回车键(相当于 keyevent("ENTER")),假如不需要,请传入 enter=False

text("test", enter=False)
2)text 接口的搜索操作

部分输入框,需要在输入内容后,点击输入键盘上的 搜索 按钮才能够激活搜索操作,可以传入 search=True 参数:

text("test", search=True)

输入法中显示的额外按键是 EDITOR CODE,刚才这个代码中的 search=True 实际上是传入了 editor code 3 。因为搜索键是最常用的按键,因此我们将它封装进了 text 接口中:

如果有点击除了 搜索 以外其他按钮的需求,需要查阅文档 Editor Action Code 来获取代码(如果该网页访问不了的话,可以自行搜索关键词 IME_ACTION_SEARCH ),然后手动传入代码进行点击。

dev = device()
# 按一下输入法的Go按钮 IME_ACTION_GO,对应键值为2
dev.yosemite_ime.code("2")

3)text 接口回车失效

如果我们在使用类似 text("11") 这样的脚本,不能正确回车的时候,我们可以使用下述方式来添加这个回车的效果:

text("11")
ime=G.DEVICE.yosemite_ime
ime.code(6)
4)输入失败的处理

text 输入失败,大概率都绕不过下面几个问题:

  • 手机阻止了 Yosemite.apk 的安装和运行
  • 没有将 Yosemite 输入法设置为手机默认输入法
  • 输入账号密码之类的,没有关闭手机的 安全输入 / 安全键盘 设置
  • 部分手机的兼容性问题
  • 部分模拟器未关闭 物理键盘 的问题

那对应地,当出现无法输入,或者输入报错的时候,我们就可以依次检查下是否有上述情况,比如检查手机上是否正常安装了 Yosemite.apk ,输入法设置里,是否将 Yosemite 设置为了默认输入法等等。

手机的兼容性问题,我们可以参考官方教程文档的Android连接常见问题这部分的内容: https://airtest.doc.io.netease.com/IDEdocs/3.2device_connection/3_android_faq/#2_1 。

输入密码界面黑屏、无法输入时,也别需要关注手机上的 安全输入安全键盘 之类的设置是否已经关闭。

4. 拓展:poco的 set_text 接口

那其实,除了Airtest框架提供的 text 接口,Poco框架也提供了输入的 set_text 接口:

poco("com.android.mms:id/recipients_editor").click()
poco("com.android.mms:id/recipients_editor").set_text("test")

如果我们测试的应用支持poco,比如原生应用,或者是已经接入了pocoSDK的游戏应用,在输入时,都可以使用这个 set_text 接口。

相比Airtest的 text 接口,它还有一点比较便利的是快速清空输入框:

poco("com.android.mms:id/recipients_editor").set_text(" ")

5. 结束语

那今天关于Airtest的文本输入就聊到这里,还有其他关于文本输入比较好奇的问题,欢迎同学们给我们留言~


Airtest 官网:http://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b

官方答疑 Q 群:117973773

呀,这么认真都看到这里啦,帮忙点个赞或者收藏支持下我把,灰常感谢~

Airtest输入文本那点事相关推荐

  1. 当知识图谱遇上文本摘要:保留抽象式文本摘要的事实性知识

    论文标题: Boosting Factual Correctness of Abstractive Summarization with Knowledge Graph 论文作者: Chenguang ...

  2. 一文说清文本编码那些事

    一文说清文本编码那些事 一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰. 试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑.有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,却 ...

  3. 混合开发的坑(7) ---输入文本时,键盘遮挡

    CSS绝对定位于底部,输入文本时,键盘遮挡问题. 浏览器  正确 ios 正确 anroid 会遮挡  只能通过js来解决 转载于:https://www.cnblogs.com/huangqiao/ ...

  4. NLP之TEA:基于SnowNLP实现自然语言处理之对输入文本进行情感分析(分词→词性标注→拼音简繁转换→情感分析→测试)

    NLP之TEA:基于SnowNLP实现自然语言处理之对输入文本进行情感分析(分词→词性标注→拼音&简繁转换→情感分析→测试) 目录 NLP分词 NLP词性标注 NLP情感分析-TEA NLP常 ...

  5. 转换输入文本中的回车和空格

    主要应用String类中的replaceAll()方法,将用户输入的空格和回车替换成HTML代码中的 和&nbsp,该方法用于将字符串中的某个子字符串替换成指定的字符串: replaceAll ...

  6. Flutter TextField 边框样式以及提示文本 、Flutter输入文本TextField

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. github? 你可能需要 百度同步 CSDN 网易云课堂教程 掘金 知乎 Flutter系列文章 头条同步 本文章首发于微信公众号( ...

  7. input标签中使输入文本向右偏移像素解决方案(亲测有效)

    需求:在输入框中输入文本达到这样的效果: 之前是这样的效果: 尝试过很多博主的方法,大概就是以下几种: letter-spacing:10px; text-indent:10px <input ...

  8. 如何使用jQuery设置输入文本的值

    本文翻译自:How to set value of input text using jQuery I have an input text which is this: 我有一个输入文本是这样的: ...

  9. android 文本输入区域,android – 键盘模糊输入文本区域

    我有一个显示在 http://ionicframework.com/docs/api/service/$ionicPopup/内的表单.问题是当光标放在最终输入(文本区域)内时,键盘显示但输入不会滚动 ...

最新文章

  1. android 背景图太大,android – 背景图片需要太长时间才能画(Canvas)Jerky Sprites ……?...
  2. 不同包下,相同数据结构的两个类进行转换
  3. 解决mysql服务无法启动的问题
  4. laravel5.2基础多模块开发(pingpong/modules)
  5. Python基本数据类型 set()
  6. sharepoint 2010 使用WinForm获取 SPSite对象
  7. #前端# 解决前端页面滑动不顺畅的问题
  8. 【Java】《Java编程的逻辑》第3章 类的基础 笔记+感悟分享
  9. python+django(解决对象编码显示Test Object问题)
  10. Collectors.toMap()
  11. [Struts]使用tiles管理界面遇到困难
  12. 华为轮值董事长郭平:美国在5G方面已落后
  13. 逆向分析 工具、加壳、安全防护篇
  14. vue针对ele的form组件校验
  15. 手机h5像素_h5移动端设备像素比dpr介绍
  16. 音视频多媒体开发基础概述之颜色空间(1)CIE色度模型 RGB颜色空间
  17. 反垃圾邮件智能网关之梭子鱼
  18. 51单片机LED 8*8点阵屏显示图形
  19. JAVA实现SMS短信发送(附:代码)
  20. 00后php团队,00后学霸团队自制视频脱口秀走红:不想做网红

热门文章

  1. Postgresql 开启SSL连接
  2. 精彩纷呈!亚信科技深度参与2022中国移动全球合作伙伴大会
  3. 【MMDet Note】MMDetection中AnchorGenerator代码理解与解读
  4. python实现tui_python 写个简单TUI日记本
  5. 014:Django反爬虫和反反爬虫实战讲解
  6. 接口测试软件Postman的下载及安装
  7. 第一个IP设计——完整工程和分析
  8. vue2.x---mustache模板引擎学习记录
  9. dpo指标详解买入绝技_蛇形刁手(50)——技术指标BOLL配DPO
  10. 视频面试传输协议到底是TCP还是UDP