iOS自动化测试中airtest的使用方法

发表于:2020-12-23 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:公子清羽    来源:CSDN

  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),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号