android x866.0 教程,poco脚本编写之api

连接设备后使用poco

使用connect_device连接好指定设备后,会返回一个Device对象,将这个对象传入 AndroidUiautomationPoco第一个参数里进行poco的初始化,

接下来使用此poco 实例将会获取所指定的设备的UI和对其进行操作。

fromairtest.core.api import connect_devicefrompoco.drivers.android.uiautomation import AndroidUiautomationPoco

dev= connect_device('Android://:/')

poco= AndroidUiautomationPoco(dev)

Andorid注意事项

版本越高越好

需要Android SDK API version ≥ 19,即Android 4.4及以上,越高版本兼容性越好。

使用poco

在Android原生应用上使用poco不需要配置任何依赖,只需手机处于usb调试模式即可(部分手机需要连同usb安装、usb模拟点击等权限一起打开,均位于开发者选项里)。

在初始化poco 实例时,会自动向手机里安装PocoService.apk,如果此时弹出安装提示,请点击同意,否则poco无法使用,一共会安装两个app进去。

什么时候初始化poco

1、ide中选择android的模式

2、代码中创建poco对象

脚本编写

调用文件外部方法

如果想要在一个.air脚本中,调用另外一个.air脚本里封装的公用函数,可以这样做:

from airtest.core.api import using

using("common.air")

from common import common_function

common_function()

元素定位

使用Poco选择UI对象

属性选择器

选出所有满足给定条件的UI

括号里的参数就是所给定的条件,用属性名值对表示

其中第一个参数固定表示 节点名

其余可选参数均表示节点的属性及预期的属性值。

poco('bg_mission')

poco('bg_mission', type='Button')

poco(textMatches='^据点.*$', type='Button', enable=True)

poco(name='com.zhihu.android:id/magi_title', textMatches='^古剑奇谭三.*$').click()//text模糊匹配

相对选择器

直接用节点属性没法选出你所想要的UI时,还可以通过UI之间的渲染层级关系进行选择,例如父子关系、兄弟关系、祖先后代关系。

poco('main_node').child('list_item').offspring('item')

api

点击(click)

点击默认点在 锚点上(一般就是正中央的点)

poco('bg_mission').click()

poco('bg_mission').click('center')

poco('bg_mission').click([0.5, 0.5]) # equivalent to center

poco('bg_mission').focus([0.5, 0.5]).click() # equivalent to above expression

拖拽(drag)

与 swipe 不同的是, darg 是从一个UI拖到另一个UI,而 swipe 是将一个UI朝某个方向拖动

poco(text='突破芯片').drag_to(poco(text='岩石司康饼'))

等待出现(wait)

一段时间内查找元素。超时则报错

poco('bg_mission').wait(5).click() # wait 5 seconds at most,click once the object appears

poco('bg_mission').wait(5).exists() # wait 5 seconds at most,return Exists or Not Exists

局部定位(focus (local positioning)),归一化坐标系

锚点在盒子上的哪个位置,

锚点就是操作的起点

所有UI相关的操作都默认以UI的 anchorPoint 为起点,

自定义锚点

如果想自定义起点那么可以使用 focus方法。

focus 所使用的是局部坐标系,UI包围盒的左上角为原点,x轴向右,y轴向下,并且包围盒长宽均为单位1。很显然中心点就是 [0.5, 0.5] 。

poco('bg_mission').focus('center').click() # click the center

将 focus 和 drag_to 结合使用还能产生卷动(scroll)的效果,下面例子展示了如何将一个列表向上卷动半页。

scrollView = poco(type='ScollView')

scrollView.focus([0.5, 0.8]).drag_to(scrollView.focus([0.5, 0.2]))

全局操作(Global Operation)

在没有选定或指定UI的情况下也可以进行操作(模拟输入),也叫全局操作。

点击(click)

poco.click([0.5, 0.5]) # click the center of screen

poco.long_click([0.5, 0.5], duration=3)

滑动(swipe)

方法1:

# swipe from A to B

point_a = [0.1, 0.1]

center = [0.5, 0.5]

poco.swipe(point_a, center)//推荐

方法2:

# swipe from A by given direction

direction = [0.1, 0]//向量

poco.swipe(point_a, direction=direction)

方法3:

scrollView = items[0]

scrollView.focus([0.5, 0.9]).drag_to(scrollView.focus([0.5, 0.2]))

方法4:

//操作元素滑动,操作元素就有锚点,锚点就是操作起点,如果你想改变起点请使用下面的 focus 方法,然后朝给定向量所代表的方向滑动,距离也就是向量的长度

joystick = poco('movetouch_panel').child('point_img')

joystick.swipe('up')

joystick.swipe([0.2, -0.2]) # swipe sqrt(0.08) unit distance at 45 degree angle up-and-right

joystick.swipe([0.2, -0.2], duration=0.5)

截屏(snapshot)

install("path/to/your/apk")

start_app("package_name_of_your_apk")

uninstall("package_name_of_your_apk")

读取元素

mission_btn = poco('bg_mission')

print(mission_btn.attr('type')) # 'Button'

print(mission_btn.get_text()) # '据点支援'

print(mission_btn.attr('text')) # '据点支援' equivalent to .get_text()

print(mission_btn.exists()) # True/False, exists in the screen or not

写脚本技巧

title_obj_list = poco(name='com.zhihu.android:id/magi_title')

title_list = [title.get_text() for title in title_obj_list]

discuss_obj_list = poco(name='com.zhihu.android:id/magi_count')

discuss_list = [discuss.get_text() for discuss in discuss_obj_list]

for title, discuss in zip(title_list, discuss_list):

print(title, discuss)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值