很多人可能会问,做APP自动化用Airtest不就够了吗,为什么还需要Poco?
因为Airtest的原理是图像识别,而当测试的业务场景是动态的页面控件时,那么这个时候单纯使用Airtest无法满足业务场景要求,所以在实际的工作当中,Airtest和Poco是配合在一起使用的。
今天就给大家介绍一下Poco框架常用的API,让大家对Poco框架的API能有个更加清晰的了解。
(一)官方文档
Poco介绍
官方文档
https://airtest.doc.io.netease.com/IDEdocs/poco_framework/2_API_word
(二)核心API介绍
1. 点击
语法格式:poco(name).click()
-
name:控件名或者是“属性名=属性值”方式
-
click():点击操作
-
long_click(): 长按操作
# 通过控件名定位点击
poco("star_single").click()
# 通过控件属性定位点击
poco(text="中古屋").click()
# 控件长按操作
poco('star_single').long_click()
2. 拖动
语法格式:poco("name1").drag_to(poco("name2"))
-
name1:控件1
-
name2:控件2
说明:将控件1拖动到控件2位置
# 拖动到另一个控件上
poco("name1").drag_to(poco("name2"))
# 拖动到固定目标上(相对坐标点)
poco("name1").drag_to([0.5, 0.5]
3. 等待
3.1 仅等待,但不报错
说明:使用wait方法设置等待控件的时间,再进行点击操作,并且该方法的返回值是控件本身,所以后面紧跟控件操作,比如:点击、长按
# 默认等待在3s内等待控件出现,如出现,则进行长按操作
poco("icon").wait().click()
# 在10s内等待控件出现,如出现,则进行长按操作
poco("icon").wait(timeout=10).click()
3.2 等待,不满足条件报错
说明:wait_for_appearance()和wait_for_disappearance()这两个API都可以执行等待某个元素出现或者消失,超过等待时间(默认为120s),如果还没有找到控件元素,则会报PocoTargetTime的错误
# 等待控件元素出现
poco("name1").wait_for_appearance(timeout=10)
# 等待控件元素消失
poco("name2").wait_for_disappearance(timeout=10)
3.3 Poco类的等待事件
3.3.1 wait_for_all( )
说明:wait_for_all( )是在超时时长结束之前,需要等待所有给定的UI对象都显示出来,才会进行下一步的操作
# 等待的UI对象
elem1 = poco("yellow")
elem2 = poco("blue")
elem3 = poco("black")
# 执行等待操作,默认超时时间为120s
poco.wait_for_all([elem1,elem2,elem3])
poco("btn_back").click()
3.3.2 wait_for_any( )
说明:wait_for_any( )则是在超时时长结束之前等待任意一个UI对象出来,就会执行下一步操作
# 等待的UI对象
elem1 = poco("yellow")
elem2 = poco("blue")
elem3 = poco("black")
# 开始定位元素,若是在超时时间120s内,定位到任意元素,则会执行下一步
fish = poco.wait_for_any([elem1,elem2,elem3])
4. 断言
应用场景:判断控件是否存在,若是找到控件,则返回true,否则返回false
语法格式:poco("name").exists()
if poco("name").exists():
poco("name").click()
else:
print("控件不存在")
说明:Poco和Airtest框架都有一个exists方法,但需要区分它们之间的用法,Airtest的exists是用于判断图片是否存在,而Poco的exists方式是用于判断控件是否存在。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!