Poco
Poco copied to clipboard
Poco元素查询耗时很长
问题分类 控件识别、树状结构
描述问题bug 在 Poco 1.0.87 版本后,某些场景出现查询节点耗时很慢的问题。
# 例子运行在AirTest中,直接python触发效果也等同,因此排除AirTest导致。
from airtest.core.api import *
import json
import inspect
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
auto_setup(__file__)
last_time = time.time()
ui = poco.agent.hierarchy.dump()
print("poco获取dump耗时" + str(time.time() - last_time))
last_time = time.time()
poco("add_passenger_button").exists()
print("poco查询元素存在耗时" + str(time.time() - last_time))
last_time = time.time()
poco("add_passenger_button").click()
print("poco点击耗时" + str(time.time() - last_time))
# 打印的结果
============================================================
[Start running..]
save log in '/var/folders/1x/65cvlf_d715ct5kzqtbnzdqm0000gn/T/AirtestIDE/scripts/5abc0f154388cfbfe093f75f50d61f56'
poco_target
/Applications/AirtestIDE.app/Contents/MacOS/poco/drivers/android/uiautomation.py
poco获取dump耗时0.5019688606262207
poco查询元素存在耗时10.28783893585205
[12:18:34][INFO]<airtest.core.android.rotation> update orientation None->0
poco点击耗时14.770931243896484
----------------------------------------------------------------------
Ran 1 test in 28.339s
OK
[Finished]
============================================================
#耗时正常日志
============================================================
[Start running..]
save log in '/var/folders/1x/65cvlf_d715ct5kzqtbnzdqm0000gn/T/AirtestIDE/scripts/5abc0f154388cfbfe093f75f50d61f56'
poco获取dump耗时1.6259679794311523
poco查询元素存在耗时0.3818488121032715
[12:31:51][INFO]<airtest.core.android.rotation> update orientation None->0
poco点击耗时4.8794450759887695
----------------------------------------------------------------------
Ran 1 test in 9.681s
OK
[Finished]
============================================================
复现步骤
- 降低Poco版本到 1.0.84 此问题没有出现。
- 继续测试发现,将Poco的版本保持在1.0.84(低版本),Poc Service 的APK的版本升级到 1.0.45(高版本),耗时变得很长。
- 将Poco的版本保持在1.0.87(高版本),Poc Service 的APK的版本降低到 1.0.43(低版本),耗时正常。
由此推断,是Poco Service Apk升级后,导致某些场景查询exist 和 click事件耗时很长。
预期效果 希望查询耗时正常。
相关截图 (贴出遇到问题时的截图内容,如果有的话)
python 版本: Python 3.8.9
poco 版本: 1.0.87
设备:
- 型号: [三星s8+]
- 系统: [eAndroid 9]
- (别的信息)
其他相关环境信息 排除平台和手机特性导致。测试了不同机型的手机,和所有平台的环境,均能稳定复现。
原因 因为pocoservice.apk,有个waitForIdle的方法耗时会很长。这个方法,如果页面没有稳定,就会一直等,等到最大10s超时,然后获取结果。query,exist等方法,这种情况下返回都会很慢(>10s)。 解决的方法 把超时时间改短,waitForIdle(500) ,重新打包,基本不会有什么问题。 本质原因 我们的项目中,有循环动画,会导致一直重复触发Accesiblity 动画开始事件,导致画面一直没法处于稳定状态。但是因为我们的动画场景很多,因此选择了修改waitForIdle。 建议 设置这个waitForIdle是否可以开放设置,这种动画场景应该也挺常见的。
原因 因为pocoservice.apk,有个waitForIdle的方法耗时会很长。这个方法,如果页面没有稳定,就会一直等,等到最大10s超时,然后获取结果。query,exist等方法,这种情况下返回都会很慢(>10s)。 解决的方法 把超时时间改短,waitForIdle(500) ,重新打包,基本不会有什么问题。 本质原因 我们的项目中,有循环动画,会导致一直重复触发Accesiblity 动画开始事件,导致画面一直没法处于稳定状态。但是因为我们的动画场景很多,因此选择了修改waitForIdle。 建议 设置这个waitForIdle是否可以开放设置,这种动画场景应该也挺常见的。
如何重新打包这个pocoservice.apk呢,请教一下方法,最近脚本跑的实在有点太慢了
这个是已经打包好的apk,在airtest相关安装路径替换即可,mac下在 /Library/Python/3.8/site-packages/poco/drivers/android/lib/pocoservice-debug.apk
------------------ 原始邮件 ------------------ 发件人: "AirtestProject/Poco" @.>; 发送时间: 2022年11月25日(星期五) 晚上10:27 @.>; @.@.>; 主题: Re: [AirtestProject/Poco] Poco元素查询耗时很长 (Issue #559)
原因 因为pocoservice.apk,有个waitForIdle的方法耗时会很长。这个方法,如果页面没有稳定,就会一直等,等到最大10s超时,然后获取结果。query,exist等方法,这种情况下返回都会很慢(>10s)。 解决的方法 把超时时间改短,waitForIdle(500) ,重新打包,基本不会有什么问题。 本质原因 我们的项目中,有循环动画,会导致一直重复触发Accesiblity 动画开始事件,导致画面一直没法处于稳定状态。但是因为我们的动画场景很多,因此选择了修改waitForIdle。 建议 设置这个waitForIdle是否可以开放设置,这种动画场景应该也挺常见的。
如何重新打包这个pocoservice.apk呢,请教一下方法,最近脚本跑的实在有点太慢了
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
原因 因为pocoservice.apk,有个waitForIdle的方法耗时会很长。这个方法,如果页面没有稳定,就会一直等,等到最大10s超时,然后获取结果。query,exist等方法,这种情况下返回都会很慢(>10s)。 解决的方法 把超时时间改短,waitForIdle(500) ,重新打包,基本不会有什么问题。 本质原因 我们的项目中,有循环动画,会导致一直重复触发Accesiblity 动画开始事件,导致画面一直没法处于稳定状态。但是因为我们的动画场景很多,因此选择了修改waitForIdle。 建议 设置这个waitForIdle是否可以开放设置,这种动画场景应该也挺常见的。
如何重新打包这个pocoservice.apk呢,请教一下方法,最近脚本跑的实在有点太慢了
附件似乎是被Github过滤掉了,邮件里和回复里都找不到附件..... 可否重新发个mail给我 [email protected] , 谢谢
@steveleeh 也遇到了相同的问题,10s,结果已经过去了。这个apk,能发下吗,非常感谢。 [email protected]
我们公司的测试项目在使用poco 1.0.87的时候也遇到了类似的问题,一度还以为是应用本身的问题或者uiautomator的问题,希望社区能将waitForIdle的等待时间开放设置。另外如果有大佬已经有重新打包的apk,能不能发个邮件到[email protected],或者放到某个网盘上面,谢谢。
我们公司的测试项目在使用poco 1.0.87的时候也遇到了类似的问题,一度还以为是应用本身的问题或者uiautomator的问题,希望社区能将waitForIdle的等待时间开放设置。另外如果有大佬已经有重新打包的apk,能不能发个邮件到[email protected],或者放到某个网盘上面,谢谢。
Did you get the apk? Can you send it to my email please. [email protected]
我们公司的测试项目在使用poco 1.0.87的时候也遇到了类似的问题,一度还以为是应用本身的问题或者uiautomator的问题,希望社区能将waitForIdle的等待时间开放设置。另外如果有大佬已经有重新打包的apk,能不能发个邮件到[email protected],或者放到某个网盘上面,谢谢。
Did you get the apk? Can you send it to my email please. [email protected]
Not yet
@steveleeh Can you send it to my email please. [email protected]
这个问题是不是在v1.0.94中已经解决了?