Airtest输入文本那点事
此文章来源于项目官方公众号:“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输入文本那点事相关推荐
- 当知识图谱遇上文本摘要:保留抽象式文本摘要的事实性知识
论文标题: Boosting Factual Correctness of Abstractive Summarization with Knowledge Graph 论文作者: Chenguang ...
- 一文说清文本编码那些事
一文说清文本编码那些事 一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰. 试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑.有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,却 ...
- 混合开发的坑(7) ---输入文本时,键盘遮挡
CSS绝对定位于底部,输入文本时,键盘遮挡问题. 浏览器 正确 ios 正确 anroid 会遮挡 只能通过js来解决 转载于:https://www.cnblogs.com/huangqiao/ ...
- NLP之TEA:基于SnowNLP实现自然语言处理之对输入文本进行情感分析(分词→词性标注→拼音简繁转换→情感分析→测试)
NLP之TEA:基于SnowNLP实现自然语言处理之对输入文本进行情感分析(分词→词性标注→拼音&简繁转换→情感分析→测试) 目录 NLP分词 NLP词性标注 NLP情感分析-TEA NLP常 ...
- 转换输入文本中的回车和空格
主要应用String类中的replaceAll()方法,将用户输入的空格和回车替换成HTML代码中的 和 ,该方法用于将字符串中的某个子字符串替换成指定的字符串: replaceAll ...
- Flutter TextField 边框样式以及提示文本 、Flutter输入文本TextField
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. github? 你可能需要 百度同步 CSDN 网易云课堂教程 掘金 知乎 Flutter系列文章 头条同步 本文章首发于微信公众号( ...
- input标签中使输入文本向右偏移像素解决方案(亲测有效)
需求:在输入框中输入文本达到这样的效果: 之前是这样的效果: 尝试过很多博主的方法,大概就是以下几种: letter-spacing:10px; text-indent:10px <input ...
- 如何使用jQuery设置输入文本的值
本文翻译自:How to set value of input text using jQuery I have an input text which is this: 我有一个输入文本是这样的: ...
- android 文本输入区域,android – 键盘模糊输入文本区域
我有一个显示在 http://ionicframework.com/docs/api/service/$ionicPopup/内的表单.问题是当光标放在最终输入(文本区域)内时,键盘显示但输入不会滚动 ...
最新文章
- android 背景图太大,android – 背景图片需要太长时间才能画(Canvas)Jerky Sprites ……?...
- 不同包下,相同数据结构的两个类进行转换
- 解决mysql服务无法启动的问题
- laravel5.2基础多模块开发(pingpong/modules)
- Python基本数据类型 set()
- sharepoint 2010 使用WinForm获取 SPSite对象
- #前端# 解决前端页面滑动不顺畅的问题
- 【Java】《Java编程的逻辑》第3章 类的基础 笔记+感悟分享
- python+django(解决对象编码显示Test Object问题)
- Collectors.toMap()
- [Struts]使用tiles管理界面遇到困难
- 华为轮值董事长郭平:美国在5G方面已落后
- 逆向分析 工具、加壳、安全防护篇
- vue针对ele的form组件校验
- 手机h5像素_h5移动端设备像素比dpr介绍
- 音视频多媒体开发基础概述之颜色空间(1)CIE色度模型 RGB颜色空间
- 反垃圾邮件智能网关之梭子鱼
- 51单片机LED 8*8点阵屏显示图形
- JAVA实现SMS短信发送(附:代码)
- 00后php团队,00后学霸团队自制视频脱口秀走红:不想做网红