airtest之IOS自动化测试

ideviceinstaller -l  获取手机所有app的包名

 

1、定位元素后的文本输入

text()接口是Airtest中的文字输入接口,它能实现在目标设备上输入文本的功能,但是文本框需要处于激活状态。text()接口支持的平台有:AndroidIOSWindows。它包含以下参数:

  • 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,可以多尝试使用pocoset_text来设置文字内容,如果无法输入(部分机型、部分输入框有可能不支持set_text接口),再尝试用Airtesttext()接口。

备注:

部分手机的兼容性问题也会导致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定位元素和基础操作

1、基本操作

根据节点获取控件保存变量,定位元素,可先获取节点名称,节点名称不能完全定位,加上节点的参数提高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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值