手把手教你学会文本输入的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()接口。

相关文章
|
Web App开发 前端开发 IDE
Airtest-Selenium实操小课①:爬取新榜数据
Airtest-Selenium实操小课①:爬取新榜数据
224 0
|
达摩院 Java 测试技术
最新迭代|FunASR离线文件转写软件包2.0
最新迭代|FunASR离线文件转写软件包2.0
1067 0
|
关系型数据库 MySQL Linux
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
在Linux中,如何配置数据库服务器(如MySQL或PostgreSQL)?
|
网络协议 网络架构
ensp中默认路由和静态路由实验
默认路由的作用是将无法匹配路由表中其他路由表项的数据包转发到指定下一跳路由器。在实际网络中,默认路由通常用于简化路由配置,通常在网络边缘的路由器上配置 静态路由的作用是将特定网络的数据包转发到指定下一跳路由器。在实际网络中,静态路由通常用于更精细地控制数据包的转发,通常在网络核心路由器上配置。
600 6
ensp中默认路由和静态路由实验
|
敏捷开发 测试技术 持续交付
几个有用的测试网站
几个有用的测试网站
1355 0
|
存储 Ubuntu Linux
linux系统中如何制作rootfs?详细教程
linux系统中如何制作rootfs?详细教程
399 0
|
Serverless
函数计算FC部署问题之部署失败如何解决
函数计算FC部署是指在阿里云Function Compute服务上部署函数或应用程序的过程,它提供了一个无需管理服务器即可运行代码的平台;本合集将介绍和总结函数计算FC部署中常见的问题与解决方案,指导用户如何高效部署和管理Serverless函数。
|
存储 数据采集 分布式计算
大数据数据采集的数据迁移(同步/传输)的Sqoop之数据传输实战
在大数据领域,数据迁移(同步/传输)也是非常重要的一环。Sqoop作为一个开源的数据迁移工具,可以帮助我们轻松地实现关系型数据库与Hadoop之间的数据迁移。本文将介绍如何使用Sqoop进行数据传输实战。
981 0
|
Kubernetes Cloud Native Linux
人手一套的K8S命令集合,它来了!
K8S在容器技术盛行的时代已经称为标配技术,本文瑞哥开始给大家介绍了K8S的基本知识,然后列举了K8S的命令列表,最后还给大家提炼出高频使用的命令,希望本文能够给您带来帮助。
434 0
人手一套的K8S命令集合,它来了!
|
算法
【数据结构和算法】图的应用(最小生产树、最短路径、拓扑排序、关键路径)
【数据结构和算法】图的应用(最小生产树、最短路径、拓扑排序、关键路径)
411 0
【数据结构和算法】图的应用(最小生产树、最短路径、拓扑排序、关键路径)