AirtestProject / Poco

A cross-engine test automation framework based on UI inspection
http://airtest.netease.com/
Apache License 2.0
1.74k stars 315 forks source link

Cannot find any visible node by query UIObjectProxy of "ldr_role" #581

Closed Topi9999 closed 1 year ago

Topi9999 commented 1 year ago

(请尽量按照下面提示内容填写,有助于我们快速定位和解决问题,感谢配合。否则直接关闭。)

(重要!问题分类)

描述问题bug 做识别点击的时候,UI的画面是变化的,上一次点击存在,下一次可能就不存在了或者有遮罩盖住导致无法点击的情况 我看了官方的教程有 refresh() 方法刷新节点是否存在,节点消失了,刷新后,仍然判断存在,导致走点击的逻辑,点击抛异常

Traceback (most recent call last):
  File "airtest\cli\runner.py", line 73, in runTest
  File "site-packages\six.py", line 703, in reraise
  File "airtest\cli\runner.py", line 70, in runTest
  File "E:\IDE\AirtestIDE\test_script\test.air\test.py", line 434, in <module>
    test(poco).test()
  File "E:\IDE\AirtestIDE\test_script\test.air\test.py", line 25, in __init__
    poco("ldr_role").click()
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 29, in wrapped
    raise e
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 23, in wrapped
    return func(proxy, *args, **kwargs)
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 332, in click
    pos_in_percentage = self.get_position(focus)
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 72, in wrapped
    return func(proxy, *args, **kwargs)
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 613, in get_position
    pos = list(map(float, self.attr('pos')))
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 39, in wrapped
    return func(self, *args, **kwargs)
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 736, in attr
    nodes = self._do_query(multiple=False)
  File "E:\AirtestIDE-win-1.2.14\poco\proxy.py", line 890, in _do_query
    raise PocoNoSuchNodeException(self)
poco.exceptions.PocoNoSuchNodeException: Cannot find any visible node by query UIObjectProxy of "ldr_role"

复现步骤 poco("ldr_role").refresh() if poco("ldr_role").exists: poco("ldr_role").click()

预期效果 1、节点刷新后,节点不存在,就应该不走点击 2、节点刷新后,节点仍然存在,可以点击,不抛异常 3、或者有其他的方式,只判断 当前界面可点击的控件是否存在,不然点击都要try一下很僵硬。

相关截图 (贴出遇到问题时的截图内容,如果有的话) image 图片看UI树是没有lar_role的,画面也没有,是上一个画面中的UI对象,做while循环True点击判断的, 到下一步还是判断存在

python 版本: python/3.10

poco 版本: 1.0.87

poco版本通过pip freeze可以命令可以查到

设备:

其他相关环境信息 [(其他运行环境,例如在linux]() ubuntu16.04上运行异常,在windows上正常。)

Topi9999 commented 1 year ago

已解决