连接设备后使用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)

android x866.0 教程,poco脚本编写之api相关推荐

  1. android x866.0 教程,海尔暴风AmlogicT866平台升级步骤教程

    一.本地升级(可开机进入系统设置升级): 1.将本地升级软件包"update"拷贝至U盘里,插入电视USB端口,打开电视进入系统设置选择本地升级. 1.png (75.07 KB, ...

  2. android 5.0 刷机教程,一加手机怎么升级安卓5.0系统?一加手机刷Android 5.0教程

    谷歌今天正式发布了最新的安卓5.0正式版,作为一次非常大的系统升级,安卓5.0带来了非常多明显的升级,体验上相比安卓4.4要精进不少.在众多手机纷纷向Android 5.0发起冲击之时,日一加手机官方 ...

  3. Android Studio2.0 教程从入门到精通Windows版

    系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇 Android Studio2.0 教程从入门到精通Windows版 - 入门篇 Android Studi ...

  4. android5.0刷机,一加手机怎么升级安卓5.0 一加手机刷Android 5.0教程

    谷歌今天正式发布了最新的安卓5.0正式版,作为一次非常大的系统升级,安卓5.0带来了非常多明显的升级,体验上相比安卓4.4要精进不少.在众多手机纷纷向Android 5.0发起冲击之时,日一加手机官方 ...

  5. Android Studio2.0 教程从入门到精通MAC版 - 安装篇

    来自:http://www.open-open.com/lib/view/open1466430392743.html 前言 这个教程你将学会如何使用Android Studio2.0开发Androi ...

  6. android版本升级5.0,安卓系统升级到Android 5.0教程【详解】

    很多安卓手机用户在得知Android 5.0系统推出后,都很想将自己的手机系统升级成5.0.但是,,目前,Android 5.0只推送了部分手机,其他的安卓用户想要使用此系统的话,就要来看一看小编今天 ...

  7. 小米5怎样升级android,小米5开发版怎么升级Android 7.0?小米5开发版升级Android 7.0教程...

    Android 7.0系统已经陆续推送,今天小米5手机的Android 7.0终于公测了,虽然只限于开发版,但是小伙伴们总算有盼头了!小米5开发版怎么升级Android 7.0?下面小编为大家带来小米 ...

  8. android怎么升级版本5.0,安卓系统升级到Android 5.0教程【详解】

    很多安卓手机用户在得知Android 5.0系统推出后,都很想将自己的手机系统升级成5.0.但是,,目前,Android 5.0只推送了部分手机,其他的安卓用户想要使用此系统的话,就要来看一看小编今天 ...

  9. android 5.0按钮不可用,Android 5.0 教程:解决 Smart Lock 不能正常工作问题

    Smart Lock 是 Andoird 5.0 新引入的智能解锁方案,它可以在信任的蓝牙/NFC 设备.地点实现免密码解锁,关于 Smart Lock 的详细功能介绍大家可参阅这篇文章.这个功能一经 ...

最新文章

  1. ECCV 2020 | 对损失信息进行建模,实现信号处理高保真还原
  2. 2018计算机职称考试题,2018年职称计算机Powerpoint考试试题及答案
  3. c语言115写成16进制,C语言指针问题
  4. Go 语言 Session机制和 Cookie机制
  5. 《云计算揭秘企业实施云计算的核心问题》——导读
  6. 《Arduino计算机视觉编程》一3.3 总结
  7. python初学者代码示例_python基础示例
  8. Java充电宝模型设计_继续探讨点赞功能模块设计
  9. java日期转换_java日期格式转换
  10. Atitti 类库 开发者 常用 api 目录 1.1. Meta anno注解元数据api 1 1.2. Ref 反射api 1 1.3. Database meta api 1 1.4.
  11. java IEnumerator_获取实现接口的所有类型
  12. 不用找,你想要的简约ppt模板素材都在这里
  13. 智能交通综合管控平台方案
  14. mysql 存储特殊符号_mysql 存储特殊符号
  15. linux命令练习4:cat命令;sort命令;grep命令以及cut命令练习
  16. 组件(component)技术介绍
  17. SLAM中的边缘化舒尔补
  18. Lasso 的 python实现
  19. java基础知识复习(上半)
  20. html如何让table表格垂直(上下)居中

热门文章

  1. windows重装系统刷机教程
  2. MarkDown 代码块
  3. python数字转成字符串
  4. javascript解析json数组
  5. (转)AIX基础教程
  6. 【亲子手工】创建圣诞镇
  7. linux启动xfce桌面,Xfce桌面环境美化完整教程
  8. Expression Blend制作画卷效果
  9. unity+vscode 自动补全代码
  10. 微信小程序|基于小程序实现透明背景人像分割