AirtestProject Poco1.0.87 新增的节点刷新接口:refresh()

Stacey丶梦菡
Stacey丶梦菡
订阅者
314
文章
0
粉丝
测试交流评论189字数 664阅读2分12秒阅读模式

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

有很多同学,在熟练使用我们的 Poco 脚本之后,会发现在一些情况下,节点会出现没成功刷新状态的情况。文章源自玩技e族-https://www.playezu.com/179829.html

比如,在进行元素定位和用例逻辑分离,使用 PO 模式之类的时候,提前保存了元素对象,例如:文章源自玩技e族-https://www.playezu.com/179829.html

a = poco(text="日历")

可能会出现节点状态长期不刷新的现象,今天我们就详细看一下这些情况,并且利用 Poco1.0.87 新增的 refresh 接口来帮助我们解决这个问题。文章源自玩技e族-https://www.playezu.com/179829.html

2. 案例 1

假设我们在脚本中提前保存了一个元素对象 a,这个对象表示云音乐首页的 “每日推荐” 这个文本对象,并且我们编写了一个脚本,每隔一秒,打印一下这个对象的存在状态:文章源自玩技e族-https://www.playezu.com/179829.html

AirtestProject
 Poco1.0.87 新增的节点刷新接口:refresh()插图
文章源自玩技e族-https://www.playezu.com/179829.html

如动图所示,尽管我们已经操作设备画面,离开了云音乐的首页,但是这个对象 a 的状态,仍旧没有一点点变化,一直告诉我们是存在的。文章源自玩技e族-https://www.playezu.com/179829.html

如果我们加上节点刷新接口 refresh ,看看结果会是怎样呢?文章源自玩技e族-https://www.playezu.com/179829.html

AirtestProject
 Poco1.0.87 新增的节点刷新接口:refresh()插图1
文章源自玩技e族-https://www.playezu.com/179829.html

这时候就能够正常刷新对象 a 的状态了。文章源自玩技e族-https://www.playezu.com/179829.html

3. 案例 2

Poco1.0.87 之前,我们使用 wait_for_disappearance 接口,会遇到实际上节点已经消失了,但是接口没有判断到消失的问题:文章源自玩技e族-https://www.playezu.com/179829.html

AirtestProject
 Poco1.0.87 新增的节点刷新接口:refresh()插图2

但是 Poco1.0.87 修复了这个问题,强制重新获取节点状态,避免节点已经存在、又消失后,不会刷新节点信息导致 exists() 永远为 Truebug

AirtestProject
 Poco1.0.87 新增的节点刷新接口:refresh()插图3

可以看下在 Poco1.0.87 下的运行效果:

AirtestProject
 Poco1.0.87 新增的节点刷新接口:refresh()插图4

4. refresh的注意事项

注意该接口是节点状态刷新接口,不是 poco 的刷新接口:

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
# 正确用法
poco(text="日历").refresh()
# 错误用法
poco.refresh()

错误使用会导致 AttributeError: 'AndroidUiautomationPoco' object has no attribute 'refresh' 的报错:

AirtestProject
 Poco1.0.87 新增的节点刷新接口:refresh()插图5

另外,该接口为 Poco1.0.87 新增接口,所以我们需要在最新版的 IDE,即 1.2.14 版本才可以使用;使用了本地 python 环境的同学,需要将环境里面的库更到最新:

pip install -U airtest
pip install -U pocoui

Airtest 官网:https://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b

官方答疑 Q 群:117973773

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

 
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证