手把手教你学会文本输入的text()接口

简介: 手把手教你学会文本输入的text()接口

前言



编写测试脚本的过程中,我们会经常遇到需要输入文本的情况。不论是Airtest还是poco,都给我们提供了对应的接口来实现文本输入的功能。当然,很多同学也跟我们反馈了一些在文本输入过程中遇到的问题,所以下文,我们将围绕以下几点来向大家讲述如何进行文本输入以及如何解决文本输入的常见问题:


  1. Airtest中的text()接口介绍
  2. 1个使用text()接口的例子
  3. 使用text()接口的常见问题
  4. poco中的set_text接口介绍


Airtest中的text()接口介绍



text()接口是Airtest中的文字输入接口,它能实现在目标设备上输入文本的功能,但是文本框需要处于激活状态。text()接口支持的平台有:AndroidIOSWindows。它包含以下参数:


  • text – 要输入的文本,例如:


text("hello")
复制代码


  • enter – 是否在输入完毕后,执行一次Enter(回车键),相当于keyevent("ENTER") ,默认是True;如果仅是想输入文字,而不执行Enter(回车键),则可以传入False进去:


text("hello",enter=False)
复制代码


值得注意的是,不同平台下的text()接口,会存在一些差异:


Android平台下


Android平台下的text()接口,除了上述俩个参数以外,还有另一个参数search


  • search – 是否要按下输入法键盘中的search键,默认为False;部分输入框,需要在输入内容后,点击输入键盘中的search键才能够激活搜索操作,我们传入True即可:


text("hello",search=True)
复制代码


IOS平台下


IOS平台下的text()接口,传入要输入的文本text时,会默认给text加上一个换行符\n


1个使用text()接口的例子



我们在使用text接口时,一般是这样的流程:


  1. 点一下你需要输入的位置,激活输入光标;
  2. 调用text()接口来输入内容



如图,在这个脚本里先点击了需要输入的位置,然后调用了text()接口进行输入,在运行时手机将会自动被安装一个名为 yosemite.apk 的应用,然后启用 yosemite  输入法来进行输入。


而且需要注意的是,在使用过text()接口后,手机输入法会被切换为yosemite输入法,因此看不到正常键盘了(无需惊慌)。如果需要手工输入,可以在系统的输入法设置中,把输入法切换回系统输入法即可恢复。同时我们也提供了 安卓手机助手功能 ,在手机助手中可以简单地点击鼠标来切换输入法。(可在公众号菜单中找到我们的官网教程查看安卓手机助手功能)


使用text()接口的常见问题



真机输入失败的处理


如果 text()接口输入失败,请查看是否手机阻止了yosemite.apk的安装及运行,该apk安装成功以后,手机上会出现如下的图标:



部分手机的兼容性问题也会导致text()接口输入失败,具体可以查阅官网教程中“Android连接FAQ”小结的内容。   另外我们也可以尝试将 yosemite输入法 设置为手机默认输入法,然后再进行 text()接口的调用,可以避免部分输入失败的问题。

有部分特殊型号的手机,可能在使用Yosemite输入法时容易失败,无法输入文字(OPPO与Vivo品牌更容易出现),假如没有输入中文的需求,可以尝试使用 adb shell input 指令来进行文字输入:


shell("input text 'hello world'")
复制代码


同时,上面这种adb shell input 可以直接设置为默认的输入方式,替换原先的Yosemite输入,例如这样在python代码中这样初始化手机:


from airtest.core.api import *
# 相当于命令行中使用 --device Android:///?ime_method=ADBIME 连接手机
init_device("Android", ime_method="ADBIME")
text("hello")
复制代码


Yosemite输入法的常见问题


有很多同学会问到关于Yosemite输入法的问题,在这里我们统一解释下:


1.Yosemite输入法是没有按键页面的,只通过ide输入文本,该输入法成功安装以后,设备页面下方的显示如图,是正确的:



2.当Airtest断开设备的连接之后,设备当前的输入法还是Yosemite,我们可以找到手机设置-更多设置-语言与输入法(不同型号手机修改输入法的位置可能有一些差别),然后将当前输入法改成你平时使用的输入法即可。


模拟器输入失败的处理


部分模拟器(例如夜神模拟器)在输入时无法成功,可能因为默认使用键盘输入,因此无法调用yosemite输入法,导致 text()接口无法输入文字。首先我们可以尝试确认设置中是否打开了硬件-物理键盘,尝试关闭这个选项,并设置默认输入法为yosemite输入法后再次重试即可。



如果依然失败(物理键盘选项被不断自动重置),可以打开右上角的模拟器设置,勾选软键盘选项后重试:



如果依然无法输入,可以考虑换用poco来输入,或是直接使用上述的adb指令输入英文内容。


无法在密码框中输入密码


部分厂商(例如华为、VIVO等)的某些型号手机限制了密码框的输入,强制在输入密码时必须使用 系统键盘输入 。这样会导致需要输入密码时,直接使用airtesttext()会无法输入内容,需要把以下选项打开后才能正常输入密码内容:



poco中的set_text接口介绍



poco中提供了一个set_text接口来实现文本输入的功能。这个接口无需调用输入法,可以直接设置文字。但是指定的控件必须是一个可输入的控件,例如在Android中,是一个 EditText 类型的widget


poco("com.android.mms:id/recipients_editor").set_text("hello")
复制代码


另外,set_text接口只会输入文本,而并不会像text()接口一样,默认还会执行一次回车键enter


我们建议各位如果项目已经接入了poco,可以多尝试使用pocoset_text来设置文字内容,如果无法输入(部分机型、部分输入框有可能不支持set_text接口),再尝试用Airtesttext()接口。

相关文章
textarea限制输入字符demo效果示例(整理)
textarea限制输入字符demo效果示例(整理)
AcGiGeometry::text 自画实体输出文字实例
AcGiGeometry::text 自画实体输出文字实例
|
4天前
uniapp里textarea多行文本输入限制数量
uniapp里textarea多行文本输入限制数量
|
4天前
Text文本框简单实例
Text文本框简单实例
33 1
|
11月前
|
JavaScript 前端开发 Python
brython | 获取input等标签的内容
brython | 获取input等标签的内容
96 0
|
自然语言处理
Prompt之文本生成详解教程
Prompt之文本生成详解教程
428 0
Prompt之文本生成详解教程
|
前端开发
前端知识学习案例17vs code-选中所有出现得文本
前端知识学习案例17vs code-选中所有出现得文本
50 0
前端知识学习案例17vs code-选中所有出现得文本
|
前端开发 JavaScript
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
131 0
【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
|
Python
python编程 input输入函数
本章将会讲解输入与输出中的 input()输入函数
164 0
python编程 input输入函数
|
数据处理
编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理
编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助!
274 0