
👆对私有云感兴趣能够进入公众号回复“私有云”哦。python
编写测试脚本的过程当中,咱们会常常遇到须要输入文本的状况。不管是Airtest
仍是poco
,都给咱们提供了对应的接口来实现文本输入的功能。固然,不少同窗也跟咱们反馈了一些在文本输入过程当中遇到的问题,因此下文,咱们将围绕如下几点来向你们讲述如何进行文本输入以及如何解决文本输入的常见问题:android
Airtest
中的text()
接口介绍web1个使用
text()
接口的例子shell使用
text()
接口的常见问题apipoco
中的set_text
接口介绍微信
text()
接口是Airtest
中的文字输入接口,它能实如今目标设备上输入文本的功能,可是文本框须要处于激活状态。text()
接口支持的平台有:Android
、IOS
和Windows
。它包含如下参数:app
text
– 要输入的文本,例如:编辑器
text("hello")
enter
–是否在输入完毕后,执行一次Enter
(回车键),至关于keyevent("ENTER")
,默认是True
;若是仅是想输入文字,而不执行Enter
(回车键),则能够传入False
进去:ide
text("hello",enter=False)
值得注意的是,不一样平台下的text()
接口,会存在一些差别:测试
Android平台下
Android平台下的text()
接口,除了上述俩个参数之外,还有另外一个参数search
:
search
– 是否要按下输入法键盘中的search
键,默认为False
;部分输入框,须要在输入内容后,点击输入键盘中的search
键才可以激活搜索操做,咱们传入True
便可:
text("hello",search=True)
IOS平台下
IOS平台下的text()
接口,传入要输入的文本text
时,会默认给text
加上一个换行符\n
。
咱们在使用text
接口时,通常是这样的流程:
点一下你须要输入的位置,激活输入光标;
调用
text()
接口来输入内容
如图,在这个脚本里先点击了须要输入的位置,而后调用了text()
接口进行输入,在运行时手机将会自动被安装一个名为yosemite.apk
的应用,而后启用 yosemite
输入法来进行输入。
并且须要注意的是,在使用过text()
接口后,手机输入法会被切换为yosemite输入法,所以看不到正常键盘了(无需惊慌)。若是须要手工输入,能够在系统的输入法设置中,把输入法切换回系统输入法便可恢复。同时咱们也提供了 安卓手机助手功能 ,在手机助手中能够简单地点击鼠标来切换输入法。(可在公众号菜单中找到咱们的官网教程查看安卓手机助手功能)
真机输入失败的处理
若是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等)的某些型号手机限制了密码框的输入,强制在输入密码时必须使用系统键盘输入。这样会致使须要输入密码时,直接使用airtest
的text()
会没法输入内容,须要把如下选项打开后才能正常输入密码内容:
poco
中提供了一个set_text
接口来实现文本输入的功能。这个接口无需调用输入法,能够直接设置文字。可是指定的控件必须是一个可输入的控件,例如在Android中,是一个 EditText
类型的widget
:
poco("com.android.mms:id/recipients_editor").set_text("hello")
另外,set_text
接口只会输入文本,而并不会像text()
接口同样,默认还会执行一次回车键enter
。
咱们建议各位若是项目已经接入了poco
,能够多尝试使用poco
的set_text
来设置文字内容,若是没法输入(部分机型、部分输入框有可能不支持set_text
接口),再尝试用Airtest
的text
()
接口。


本文分享自微信公众号 - AirtestProject(AirtestProject)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。