Airtest输入文本那点事

简介: Airtest输入文本那点事

网络异常,图片无法展示
|


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 的底部提示,遮挡到手机应用按钮的情况,可以把具体机型、具体应用和按钮页面截图,提单给我们的开发者去核查和处理: airtest.netease.com/issue_creat…


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连接常见问题这部分的内容: airtest.doc.io.netease.com/IDEdocs/3.2…


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


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的文本输入就聊到这里,还有其他关于文本输入比较好奇的问题,欢迎同学们给我们留言~

相关文章
|
3月前
|
Linux 开发者 iOS开发
Python中使用Colorama库输出彩色文本
Python中使用Colorama库输出彩色文本
|
4月前
|
Linux UED iOS开发
Python colorama 设置控制台、命令行输出彩色文字
Python colorama 设置控制台、命令行输出彩色文字
62 0
|
6月前
|
编解码
Python-【键盘-鼠标】移动、操作、输入
Python-【键盘-鼠标】移动、操作、输入
34 0
|
7月前
|
计算机视觉 Python
在Python中实现图片转字符画打开图片
在Python中实现图片转字符画打开图片
45 1
|
7月前
|
Android开发
Airtest遇到模拟器无法输入中文的情况该如何处理?
Airtest遇到模拟器无法输入中文的情况该如何处理?
|
搜索推荐 Python
Python如何输出文本到屏幕
Python如何输出文本到屏幕
205 0
|
Python
textwrap库:Python格式化文本段落
textwrap库:Python格式化文本段落
179 0
textwrap库:Python格式化文本段落
|
文字识别 PyTorch TensorFlow
python捕获桌面文字信息
本次试验是因为女友的工作带着些客服性质,经常需要回复些重复性质的信息,他们的私域数据集中在企业微信,但是我没有办法去打通这个渠道,所以我就琢磨着能不能捕捉整个桌面的信息,然后解析出需要的数据。
917 0
|
Python
退出 python命令行,Pycharm不能使用Ctrl+C 和Ctrl+V复制粘贴的问题,python实现矩阵转化图像
退出 python命令行,Pycharm不能使用Ctrl+C 和Ctrl+V复制粘贴的问题,python实现矩阵转化图像
317 0
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
923 0
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。