前言
一般情况下,在我们用Airtest连接Android设备(真机或模拟器)的时候,Yosemite.apk
就会被自动安装到我们的设备上。当程序执行到输入语句时,也会启用 Yosemite
输入法来进入输入操作。
但很多新手同学对于这个 Yosemite.apk
还不是那么熟悉,我们官网上也没有详细的文档对它进行介绍。所以今天我们总结了6点同学们常问的、关于 Yosemite
的知识点,希望能让同学们更加了解这个应用的功能作用以及常见问题。
1.为什么输入时手机输入法的键盘弹不出来
很多同学刚刚用 Airtest 做输入操作的时候,会发现安卓设备上的键盘都不能弹出来了,效果如图:
其实,Yosemite
是Airtest项目专门为安卓设备准备的输入法,它本身就是不带软键盘的,使用时只会在设备底部出现一个简单的提示。并且只要在脚本中使用了 text()
接口,程序默认就会调用该输入法来进行输入操作。
2.如何快速切换设备的输入法
用Airtest连接上我们的设备之后,当前输入法一般就被设置成了 Yosemite
输入法。但有时候我们想要进行手动输入,就需要我们切换成别的输入法了。
① 在IDE中快速切换
如果使用了IDE,我们可以在设备窗口的右上角打开 安卓手机助手 ,然后在安卓助手中快速切换输入法,再进行手动输入:
② 在手机设置中切换
如果同学们没有使用IDE,也可以在手机设置中找到输入法设置,然后将当前输入法切换成 Yosemite
以外的输入法即可。
3.如何用text()接口进入输入
在脚本中,如果想要实现文字输入,一般需要这样的流程:
① 点一下你需要输入的位置,激活输入光标
② 调用Airtest的 text()
接口来输入内容
4.Yosemite未安装或不是当前输入法容易出现的问题
① 设备连接不上
部分品牌的手机默认会阻止通过USB安装应用,这样就会导致在初始化设备的时候,不能自动安装上 Yosemite
等apk,最终使Airtest连不上手机。除此之外,手机的当前输入法不是 Yosemite
,也可能影响设备连接或者脚本运行。
(Airtest连接未装上Yosemite的模拟器报错如图)
所以连接失败/报错时,我们也需要检查下 Yosemite
等apk是否已经安装在设备上,并把它设置为当前输入法。尤其是很多模拟器,初始化时并不会自动安装 Yosemite
,所以我们在连接安卓模拟器时,一般建议先手动安装上 Yosemite.apk
。
② text()接口输入失败
如果 text()
接口输入失败,一种情况是手机阻止了 Yosemite.apk
的安装及运行,这时候只要手动安装上即可。另一种常见情况是部分型号的手机不允许在输入密码时调用第三方输入法,这时候可以检查手机设置中的 语言与输入法-安全输入
、安全键盘
之类的设置是不是打开的,取消这些选项之后,就可以使用非系统自带的输入法来输入密码了。
另外,有部分特殊型号的手机存在不兼容的情况,在使用 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
输入法后,再次重试即可。
5.去哪里下载Yosemite.apk
在官网上下载一个最新的IDE包,解压出来,在下述路径中可以找到 Yosemite.apk
:
同理,如果需要手动安装 pocoservice-debug.apk
等,也可以在IDE的解压文件中找到:
6.Yosemite的录屏功能
1.1.3和1.1.4版本的Airtest的录屏功能也是由 Yosemite.apk
完成的。很多同学在新的测试机使用录屏功能的时候,往往会出现录屏失败报错等情况。这是因为初次使用录屏功能时,需要手动打开设备上的 Yosemite
应用,允许 Yosemite
截取设备的屏幕内容,如果未在下述弹窗中允许截图,将很容易导致录屏失败:
所以同学们在遇到录屏失败时,请确保已经在 Yosemite
上允许了截取功能。另外部分模拟器(eg:夜神模拟器)不支持这种录屏方式,同学们可以尝试更换别的模拟器。
如需要在脚本中开启录屏功能,可以使用 start_recording()
接口,结束录屏时调用 stop_recording()
接口即可: