同窗们好,我是网易AirtestProject的团队成员晓娟,欢送各人来到我们的教程专栏《14天Airtest主动化测试小白课程》。
上节课我们一路进修了若何编写Airtest脚本,Airtest框架的核心就是截图脚本。而我们的另一个测试框架Poco,跟Airtest的不同十分大,它的核心是元素定位。
那么今天我们就来进修下:poco脚本的编写和运行。
poco辅助窗功用与编写Airtest脚本的步调类似,我们起首需要在IDE中毗连上1台待测设备,那里以雷电模仿器为例,毗连好设备之后,我们来看看poco辅助窗:
① 选择对应的poco形式
点击stop的下拉按钮,能够显示目前所撑持的平台,好比unity、UE4、Android和iOS等,测试哪个平台,我们就需要把那里的poco形式选到对应的平台。好比我们那里想要测安卓模仿器的原生应用,就需要鄙人拉菜单中选择安卓形式:
选择了Android形式之后,期待几秒,窗口就会刷出当前设备的UI树,而且在脚本编纂窗中,会弹出1个能否插入poco初始化代码的提醒,选择yes之后,脚本编纂窗就会被主动插入当前形式的初始化脚本:
当然,若是我们想要测试unity游戏,就需要在poco形式中选择unity,而不是Android。当UI树一般显示之后,我们就能够利用poco辅助窗的锁定UI控件或者录造poco脚本的功用了。
不外需要留意的是,除了安卓原生和iOS原生不需要接入pocosdk就能够间接显示UI树之外,其余引擎的游戏,好比unity、UE4、Cocos creator等,都需要事先按官网教程接入pocosdk后,才气够获取到poco的UI树。
各类平台接入SDK的教程汇总
1) unity3d接入教程 :https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integration.html#unity3d
2)cocos2dx-lua接入教程:https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integration.html#cocos2dx-lua
3) cocos2dx-js接入教程:https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integration.html#cocos2dx-js-beta
4) cocos-creator接入教程:https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integration.html#cocos-creator
5)Egret接入教程:https://github.com/AirtestProject/Poco-SDK/tree/master/Egret
6) UE4接入教程:https://mp.weixin.电话.com/s?__biz=MzUxMDc4NTkwMA==&mid=2247484258&idx=1&sn=0fec4461bc870077af4e096b494d646a&chksm=f97ce361ce0b6a77c885193a900d2be08d22c3cf86a0e90a5fb0e83758aaffc65a9d00ec3927&token=1860040772&lang=zh_CN#rd
7)自行接入其它引擎的教程:https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/implementation_guide.html
8)WebView检视:https://airtest.doc.io.netease.com/IDEdocs/poco_framework/poco_webview/
9)无需接入pocoSDK的平台:Android原生、iOS原生
10)暂不撑持的平台:Windows、MacOS等
② poco检索功用
先来看下锁定查看UI控件的功用,单击像一把小锁一样的按钮,此时整个设备画面会被锁定;之后再把鼠标挪动到设备画面上,能够看到鼠标可以检索出画面内包罗的控件,而且会用1个半通明的框框住了那个控件,单击该控件,log查看窗就会显示出该控件的属性信息,那个功用能够帮忙我们快速查看控件的所有属性:
小锁右边的检索按钮,跟适才介绍的又有点差别,它能够检索当前页面的控件,但是不会锁定设备的当前页面,也就是说,跟着鼠标的点击动做,画面会跟着做出对应的响应:
③ 录造poco脚本
接下来我们看看录造按钮,跟着鼠标在设备上对各个控件停止点击或者滑动的操做,脚本编纂窗会主动生成一系列的poco脚本:
关于录造好的poco脚本,我们也能够在IDE中右键零丁运行,或者一键回放。
api介绍和定位选择器当然,除了接纳录造的办法生成poco脚本之外,更重要的是,学会本身编写poco脚本,实现更多更复杂的需求。次要有2个问题:1个是元素的定位语句是怎么写的;第2个是poco常见的api操做有哪些。
① 定位选择器
我们先来看看第1个问题,编写元素定位语句,poco给我们供给了3种定位选择器:
一是根本选择器,即操纵元素的一些根本属性来停止定位,好比name、text等等。举个例子,poco(name="网易云音乐"),那个定位语句就是利用根本选择器停止定位的。当然我们能够不行利用1个属性来定位,括号里面能够用多个属性来定位控件。适才我们进修了若何检索控件,查看元素属性,就能够用那些属性写定位语句了。
二是相对选择器,即操纵控件之间的父子关系、爷孙关系和兄弟关系等来定位控件。例如parent()、child()、offspring()等。举个例子:poco("androidx.appcompat.widget.LinearLayoutCompat").child("搜刮"),就是典型的操纵父子关系来定位元素的,那个需要借助poco辅助窗的那棵UI树,察看目的节点附近的控件,然后操纵相对关系停止定位。有些比力难定位的节点,可能需要编写几层关系才能够定位到,好比适才我们录造的时候,就很容易呈现很长的定位语句。
三是控件挨次选择器,常用于UI树中多个不异名称的节点定位。好比,poco("com.netease.cloudmusic:id/mainActivityTab").offspring("androidx.appcompat.app.ActionBar$Tab")[0],定位的就是那4个不异名字节点的第1个,坐标是从0起头递增的。
② poco常用的api
领会完那3种定位体例之后,我们再来看看poco都有哪些常见的控件操做,那里以我们官网上供给的1个unity游戏(https://poco.readthedocs.io/en/latest/source/doc/poco-example/index.html)为例,那个demo已经事先接入了pocosdk,所以在设备上安拆好那个demo,翻开游戏,在poco辅助窗内选择unity形式,期待几秒即可刷出那个游戏的UI树了:
然后看一下,我们常见的poco功用有以下几点:
1)点击操做
poco("star_single").click()
poco(star_single).long_click()
2)读取和设置控件的属性
poco("star_single").get_name()
poco("star_single").attr(name)
poco("star_single").get_text()
poco("pos_input").set_text("123")
poco("pos_input").setattr(text,"456")
3)判断元素能否存在
poco(XXX).exists()
4)拖动与滑动
poco("star").drag_to(poco("shell"))
5)内部偏移和外部偏移(focus)
poco("pearl").focus([0.1,0.1]).long_click()
poco("pearl").focus([0.9,0.9]).long_click()
poco("pearl").focus([0.5,-3]).long_click()
6)遍历元素
for star in poco("playDragAndDrop").child("star"):
star.drag_to(poco("shell"))
7)期待事务
poco("bomb").wait_for_appearance()
poco("bomb").wait_for_disappearance()
yellow = poco("yellow")
blue = poco("blue")
black = poco("black")
poco.wait_for_all([yellow,blue,black])
poco.wait_for_any([bomb,yellow,blue])
③ 官网的unity游戏demo
那个demo能够帮忙我们很好地去操练那些常见的poco api,课前我们也筹办了1个测试那个demo的脚本,里面根本包罗了poco所有常见的api:
老样子,我们先讲解下那个脚本里面的一些常识点,课后同窗们再本身测验考试写一个如许的脚本出来,稳固常识点。
别的需要那个示例脚原来进修的同窗,能够到我们的官方公家号回复“A08”即可获取。
生成和导出陈述上面我们已经给各人演示过那个脚本的运行了,如上节课讲的那样,我们间接点击顶部菜单栏的查看陈述按钮,即可生成那份poco脚本的运行陈述,并用你电脑的默认阅读器翻开(建议利用谷歌阅读器,对陈述的兼容性更好)。别的那份陈述仅限于在当地查看。
如需发给他人查看,我们需要导出脚本:右键单击脚本名称,选择导出陈述,在选择导出的途径,比及陈述导出即可。
小结好了,那节课的内容就到此为行啦,今天我们次要进修了poco脚本的录造、定位脚本的编写以及常见的poco api等等,内容仍是比力多的,希望同窗们课后能够好好操练,先把课上讲的示例本身编写一遍之后,就能够测验考试写一写此外应用的poco测试脚本了。
下节课我们将进修一个新的库:airtest-selenium,用于网页的主动化测试,下期我们不见不散~