ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Airtest+Poco常见Exception报错

2022-06-18 19:35:28  阅读:230  来源: 互联网

标签:Exception 元素 airtest Poco 报错 File Airtest device


上期回顾:Poco API精讲之元素树冻结freeze()


以下基于
python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85

今天来说说使用Airtest和Poco框架时常见的Exception,方便以后大家排查问题。

首先我们来看看一个报错长什么样子

Traceback (most recent call last):
  File "D:/code/Airtest/airtest_1/airtest_python.py", line 17, in <module>
    connect_device("Android://127.0.0.1:5037/1ae7be68")
  File "D:\soft\Miniconda2\envs\py38\lib\site-packages\airtest\core\api.py", line 68, in connect_device
    dev = init_device(platform, uuid, **params)
  File "D:\soft\Miniconda2\envs\py38\lib\site-packages\airtest\core\api.py", line 37, in init_device
    dev = cls(uuid, **kwargs)
  File "D:\soft\Miniconda2\envs\py38\lib\site-packages\airtest\core\android\android.py", line 46, in __init__
    self.adb.wait_for_device()
  File "D:\soft\Miniconda2\envs\py38\lib\site-packages\airtest\core\android\adb.py", line 303, in wait_for_device
    raisefrom(DeviceConnectionError, "device not ready", e)
  File "D:\soft\Miniconda2\envs\py38\lib\site-packages\airtest\utils\compat.py", line 55, in raisefrom
    raise_from(exc_type(message), exc)
  File "<string>", line 3, in raise_from
airtest.core.error.DeviceConnectionError: 'device not ready'

最上面的第2、3行

  File "D:/code/Airtest/airtest_1/airtest_python.py", line 17, in <module>
    connect_device("Android://127.0.0.1:5037/1ae7be68")

显示本次运行的.py文件,以及是在该文件17行的connect_device最先出现的错误
之后下面每一个File就是最上面那个报错文件依次调用的地方

最后一行

airtest.core.error.DeviceConnectionError: 'device not ready'

表示这个报错类型是DeviceConnectionError,从字面理解就是设备连接错误
报错描述device not ready
报错的路径是airtest.core.error
我们需要关心的就是报错类型和报错描述了,一般情况下看这2个基本就能明白大概是什么原因导致的报错,再结果代码上下文就可以Debug了。

扩展阅读:Python 异常处理

下面不再具体给出报错堆栈例子,只讲报错类型,大家以后遇到问题对号入座即可。

Airtest框架

DeviceConnectionError

因为设备连接符写错、设备物理连不上等原因导致的设备连接问题,都会报这个错。

TargetNotFoundError

Airtest框架最常见的一个了,图片找不到的时候,就会报这个错误。
最常见的两个原因:一个是页面(画面)出现太慢或太快,导致去查找的时候确实没有;一个是图像存在,但threshold阈值不达标。

扩展阅读:Airtest-API精讲之Template

AdbError

ADB命令执行时出错。Android很多API底层其实是基于ADB实现的,所以不要疑惑你没调用ADB,可能Airtest底层调用了。

AdbShellError

adb shell命令执行时出错。ADB有些命令是要进入adb shell才能执行的。

扩展阅读:ADB命令大全

ScreenError

截屏时可能会出现的错误

MinicapError

安卓底层Minicap相关报错
扩展阅读:Airtest源码分析--Android屏幕截图方式

MinitouchError

安卓底层Minitouch相关报错

Poco框架

InvalidOperationException

无效操作时出现的报错,比如一个长列表,末尾的元素在屏幕外,你却要点击;又或者一个图片元素,你却当输入框去设置它没有的text属性。

PocoNoSuchNodeException

元素不存在的报错,比如你把元素属性写错了,肯定找不着;或者是页面(画面)出现太慢或太快,导致你要操作的元素当时未找到。避免这个问题的最好办法就是先等待元素出现了,再去操作

扩展阅读:Poco API精讲之 等待 wait

PocoTargetTimeout

等待元素超时,这个异常只会在你主动等待元素出现或消失时抛出,和PocoNoSuchNodeException不一样,当你的操作速度太快,界面来不及跟着变化的话,你只会遇到PocoNoSuchNodeException而不是PocoTargetTimeout

总结:PocoTargetTimeout是等待时元素不存在的报错;PocoNoSuchNodeException是操作时元素不存在的报错

PocoTargetRemovedException

操作元素时元素被移除的报错。上面我们说了,操作元素时最好先等待,再操作。但偶尔会出现你等待的时候它在,等你要去操作的一瞬间,它没了,就会报这个错。

 

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

标签:Exception,元素,airtest,Poco,报错,File,Airtest,device
来源: https://www.cnblogs.com/songzhenhua/p/16389047.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有