deviceinstaller -l 获取手机所有app的包名。
定位元素后的文本输入
text()接口是Airtest中的文字输入接口,它能实现在目标设备上输入文本的功能,但是文本框需要处于激活状态。text()接口支持的平台有:Android、IOS和Windows。它包含以下参数:
text – 要输入的文本,例如:
text("hello",enter=True,search=False) |
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。
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()接口。
备注:
部分手机的兼容性问题也会导致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") |
把airtest截图脚本上面的相对路径,改成绝对路径,这样程序也能够根据绝对路径找到我们的截图文件:
touch(Template(r"D:/test/tpl1590718697837.png", rgb=True, record_pos=(-0.383, 0.717), resolution=(1080, 1920)))
poco定位元素和基础操作
基本操作
根据节点获取控件保存变量,定位元素,可先获取节点名称,节点名称不能完全定位,加上节点的参数提高2准确性,如name,type。
x = poco('NodeName') x = poco('NodeName',type = '类型名比如Button') |
获得A节点下的子节点B:
item = poco('ANodeName').child('BNodeName') |
获取A节点下类型为Image的子节点:
item= poco('ANodeName').child(type='Image') |
获得A节点下的子节点B的所有名为C的子孙节点,是一个节点数组,offspring:获取当前节点下的所有子节点和孙节点:
items = poco('ANodeName').child('BNodeName').offspring('CNodeName') |
根据下标获得某个节点数组中的某个节点:
item = items[i] |
获取属性:
x.get_position() x.get_text() |
输入文本:
x.set_text('文本') |
判断控件是否存在,并进行操作:
if x.exists(): do something |
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理