airtest调用元素失效

错误:Cannot find any visible node by query UIObjectProxy of

img

报错的部分是定位相册第一行第一个点击失效报错,偶现,有时可以定到,除了截图还有没有其他办法可以准确定位到?

  • 这篇博客: airtest踩坑日记中的 三、Cannot find any visible node by query UIObjectProxy of 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 两天没解决这个傻逼问题,战略性放弃,转战auto.js

    更新:已解决该问题,直接返回重进该页面或者进行刷新等操作即可,我个人是皮皮虾点赞后,界面却不更新,无法获取送神评这个按钮信息,原因猜测为:当前ui某个元素发生变化,比如按钮变色等等,从poco获取该元素信息时,poco认为当前页面没有发生变化而继续沿用上一次dump出的页面树节点的缓存进行查找,查找结果必然失败,找不到或者该元素没用像想象中的发生变化,我个人的解决方案是:操作完成后,先back下,再重新进入,再读取即可,真tm神坑

     

  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料,该问题可能是由于当前页面的某个元素发生了变化,导致无法准确定位元素。一种解决办法是在操作完成后,先返回上一个页面,再重新进入,再次定位元素。

    以下是一个示例代码,展示了如何使用airtest进行页面的返回和重新进入操作:

    from airtest.core.api import *
    
    # 返回上一个页面
    keyevent("BACK")
    
    # 重新进入页面
    start_app("your_app_package_name")
    
    # 进行元素定位和操作
    # ...
    

    这个代码示例中使用了airtest中的核心API,其中keyevent("BACK")用于模拟返回键,返回上一个页面;start_app("your_app_package_name")可以用于重新进入应用页面。

    可以将以上代码适配到你的测试用例中,在操作完成后执行返回和重新进入操作,然后再进行元素的定位和操作。

    如果以上方法无效,你可以尝试使用其他定位元素的方法,例如使用元素的坐标进行点击操作。可以通过airtest中的touch函数来实现:

    from airtest.core.api import *
    
    # 使用元素的坐标进行点击操作
    touch((x, y))
    
    # 其他操作
    # ...
    

    其中(x, y)是元素在屏幕上的坐标,可以通过相关工具进行获取。

    如果以上方法仍然无效,建议参考参考资料中提到的使用其他的自动化测试框架,如auto.js,来进行测试。