Poco的介绍和入门教学

前言

前面我们已经介绍了基于图像识别的测试框架Airtest,通过图像识别,已经可以编写大部分的测试脚本。但是在某些特殊情况下,例如对于游戏或App里的动态元素,通过图像识别定位较为困难。所以,我们的Airtest Project解决方案也提供了另外一种基于UI控件搜索的自动化框架 Poco,下面我们来通过一个示例来看看Poco如何使用。

示例

原生应用

对于Android和iOS平台上的原生应用(包括系统界面),可以直接使用Poco

准备工作:下载 Airtest IDE,解压并运行

Android 原生应用

  1. 准备一台Android手机,打开USB调试功能,然后连接电脑。正常情况下,就可以在Airtest IDE中看到手机列表:

  1. 点击connect,即可在Airtest IDE 中看到设备屏幕。现在进入Android主界面,点击左侧的Poco辅助窗,选择Android模式,即可看到当前界面的UI树结构:

  1. 选择Poco辅助窗口中的Poco Inspector按钮,即可对页面上的UI控件进行定位:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b1VcVAbZ-1575428725532)(https://note.youdao.com/yws/public/resource/dfaa41006917d2065f515aa155a9a7a8/8CF2A29A0162408E829C15884B98655B?ynotemdtimestamp=1562643575542)]

  1. 与Airtest的使用方式类似,我们可以使用Poco提供的方法对界面上的元素进行操作:
# Airtest IDE自动插入的初始化语句from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)# 点击设置图标
poco(desc="设置").click()

如上所示代码,即可通过UI属性进行元素定位,并进行操作。

关于使用Poco测试Android原生应用的更多细节,可以参考教程(五、如何在Android手机上进行自动化测试(下))。

iOS 原生应用

对于iOS原生应用,Poco同样可以获取到UI层级结构。除了下载运行Airtest IDE之外,我们还需要运行ios-Tagent项目,才可以获取到iOS界面的UI信息。具体步骤如下

  1. 连接iOS手机,启动ios-Tagent项目,以Test方式运行到手机上。
  2. 使用iproxy命令启动代理
iproxy 8100 8100

如果希望在另外一台电脑连接iOS手机,可以安装wdaproxy

  1. 启动Airtest IDE, 输入proxy地址,即可连接iOS手机

  1. 选择Poco辅助窗中的iOS模式,即可看到当前界面的UI树结构:

  1. 获取到界面UI层级关系之后,我们就可以用Poco提供的API来编写自动化脚本了~

游戏

由于游戏的界面是通过游戏引擎渲染出来的,游戏界面没有系统原生的控件信息,所以对于游戏,我们需要接入 poco-sdk 才能获取到游戏界面中的控件信息。下面以Unity开发的手游为例,介绍如何在Android和iOS平台进行连接。

Android 游戏

  1. 参考 引擎接入指引,接入Poco-sdk。如下是Unity中接入方式:

  1. 启动Airtest IDE,并启动对应的游戏,选择Poco辅助窗中的Unity模式,即可看到当前界面的UI树结构:

  1. 在选择Unity模式之后,Airtest IDE会自动插入poco的初始化代码:
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()

之后的脚本编写,就可以利用Poco提供的API对游戏界面上的元素进行操作了

iOS 游戏

  1. 同样的,先完成引擎SDK接入,然后通过Airtest IDE连接iOS手机
  2. 与Android不同的是,iOS Unity Poco的连接需要启动两个proxy,8100端口用于连接iOS手机,5001端口用于连接poco-sdk的rpc端口
iproxy 8100 8100
iproxy 5001 5001

这里的iproxy相当于adb中的forward

  1. 连接好iOS手机之后,选择Poco辅助窗中的Unity模式,即可看到当前界面的UI树结构:

  1. 之后即可通过Poco提供的API,对iOS上的游戏编写自动化测试脚本了。

Poco的平台支持情况

Poco在大多数平台中,需要事先接入Poco-SDK才可正常使用 ,在少数平台(如Android与iOS原生APP)可直接使用Poco,目前支持平台如下:

平台 Airtest Poco
Cocos2dx-js, Cocos2dx-lua 接入文档
Unity3D 接入文档
Android 原生APP 直接使用
iOS 帮助文档
Egret 接入文档
Other engines 可自行接入
WeChat Applet&webview 参考文档 随着微信更新可能会失效
Windows, MacOS 敬请期待
Netease 网易内部引擎帮助文档

在文档Poco支持平台中,可以获得最新更新的平台支持情况。

更多详细资料参考

请查看Poco官方文档获得更多教程与API信息,这里是一些关注度较高的内容:

  • 入门教学用例
  • 如何使用Poco选择UI对象?
  • API文档参考:Poco instance API,UI proxy object API
  • 各类引擎如何接入Poco SDK?
  • 如何为自定义引擎编写Poco SDK?

想获取更多教程文章,欢迎关注我们的官方公众号AirtestProject,查看往期精彩教程:

Poco的介绍和入门教学相关推荐

  1. Windows Azure Marketplace入门教学-利用TabLeau Public构建可视化DataMarket应用

    公告    :本博客为微软云计算中文博客  的镜像博客.   部分文章因为博客兼容性问题  ,会影响阅读体验  .如遇此情况,请访问  原博客    . 在上一篇教学Windows Azure Mar ...

  2. 计算机word入门教学ppt,word2003入门教学课件

    word2003入门教学课件 学习内容分析 Word 2003文字处理工具软件是中学信息技术课的基础知识,文字处理是安排在七年级进行.这节课的教学内容是初识Word 2003,之前学生已经掌握了写字板 ...

  3. CANoe 11.xx 快速入门教学

    CANoe 11.xx 快速入门教学 本教程主要使用1630A为例并且笔者目前也只使用过1630A.本教程主要目的是让读者可以从零开始学会CANoe最基本的使用,并且笔者也是刚刚入门,通过浏览文献.博 ...

  4. Visual SourceSafe 入门教学(转)

    http://blog.csdn.net/gooddasenlin/archive/2007/11/13/1881304.aspx Visual SourceSafe 入门教学 作者:蔡焕麟 日期:S ...

  5. MySQL 入门教学,真的已经很简洁了

    MySQL 阅读本文前必看:本文是 MySQL 入门教学,从简介 -> 建立数据库 -> 理解数据类型和字段约束 -> 建立数据表 -> DML(增删改,查单独在我的另一篇博客 ...

  6. 1.偏头痛杨的Java入门教学系列之认识Java篇

    转载自:偏头痛杨的Java入门教学系列 地址:https://blog.csdn.net/piantoutongyang/article/details/70138697 前戏 今天我们主要来介绍一下 ...

  7. Taro 框架入门教学视频

    Taro 框架入门教学视频 千锋教育出品这个教程 https://www.bilibili.com/video/BV1W7411v7LU ,比系统学习文档更快捷(文档可能很多用不上)2020 年初,以 ...

  8. Springboot 整合 ElasticSearch 入门教学必看

    ElasticSearch 相比搜到这篇文章的人,都已经有过对它的了解, 一种流行的企业级搜索引擎,是一个分布式,高性能.高可用.可伸缩的搜索和分析系统. 那么用我粗俗的言语来说,它就是提供一个存储数 ...

  9. 视频教程-一夫C4D教程Cinema4D R20零基础建模渲染动画入门教学课程-Cinema 4D

    一夫C4D教程Cinema4D R20零基础建模渲染动画入门教学课程 中国电商服务联盟品牌讲师.中国国际互联网节品牌顾问. 12年视觉设计经验,5年视觉讲师经验.电商品牌视觉策划讲师 .曾任知名电商企 ...

最新文章

  1. 【BZOJ3963】[WF2011]MachineWorks cdq分治+斜率优化
  2. 飞花的糖果_JAVA
  3. BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】
  4. 10.类的构造(1)
  5. Docker Compose 项目
  6. amd平台linux驱动安装失败,ati闭源驱动安装失败,问题解觉不了。
  7. Spring : ImportBeanDefinitionRegistrar源码分析
  8. 天大 ACM 1090. City hall
  9. 计算机二级考试基础知识文档,计算机二级公共基础知识(考试必考)
  10. 中原工学院计算机网络,计算机网络 考试重点 中原工学院.doc
  11. VB通用对话框commom dialog中关于filterindex的设置
  12. 就叫2021年度总结吧
  13. 广东省2021年夏季新冠疫情期间中医治未病指引
  14. 神经网络可以解决的问题,人工神经网络通过调整
  15. 定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试了Test2,进行测试
  16. 【Leetcode】1905. Count Sub Islands
  17. 机器学习入门课程笔记(一)——deeplearning.ai: Neural Networks and Deep Learning
  18. c语言从键盘输入一个百分制成绩score,C语言 基础练习40题
  19. 原生js之运动函数的封装
  20. php 银行支付通道_PHP银联在线支付接口的开发实例

热门文章

  1. qc35 说明书_Bose QC35耳机怎么使用,Bose QC35耳机使用教程
  2. Win10连接Bose QC30 显示已配对但连接失败
  3. 校园网可以登录其他网站和应用,却无法登录校内网站的问题的解决方法
  4. 推荐两个实用的视频解析工具
  5. SuperMap iClient for Leaflet实现拖动半径进行距离查询
  6. 如何从零开始系统化学习视觉SLAM?
  7. POC和frame_num的概念
  8. python安全攻防第三章之Poc
  9. 基于NLP的软件分析和程序漏洞挖掘(二)
  10. 【pytorch】Rosenbrock 函数的 梯度下降法 和 牛顿法 求解