今天跟同学们来聊一聊点击不生效这个问题,经常听到答疑群里面有同学说:为什么我的代码执行了,但实际上没有发生点击的动作呢?又或是,为什么我用IDE连接上了设备,却不能点击手机画面呢?
下面我们就来看下,当同学们遇到各种“点击不生效”的情况时,究竟该如何排查。
查看当前IDE的选项--设置里面,是否自定义了python.exe的路径,如未设置,则只需要检查当前的AirtestIDE是否为最新版本即可,不是最新版本的话,先将其更新到最新版本:
如自定义了python.exe的路径,则表示当前未使用AirtestIDE自带的环境,而是使用了自定义的本地python环境,则需要检查自定义python环境里面的airtest库是否为最新版本,如不是最新,也请把airtest库更新到最新版。
我们可以在命令行运行 pip list
查看(如本地存在多个python环境,则需要特别注意区分自己使用的是哪个):
命令行运行或者其它python编辑器运行的情况同理,需要检查当前运行环境里面装的airtest库是否为最新版。
则排除手机设置的问题。
特别注意部分品牌手机需要开启“允许模拟点击位置”此类的选项,详情可查看官方文档:airtest.doc.io.netease.com/IDEdocs/dev… 。
这里是使用最小可复现脚本的办法,排除其它代码的干扰,能更快速定位到问题:
如出现类似 Picture xxx not found in the screen
的报错,则表明截图识别失败了,我们需要重新截图;比如说截取特征更加明显的截图,减少混入多余的背景等等,关于如何提高截图脚本的兼容性,我们也在之前的推文 “写了10000条Airtest截图脚本总结出来的截图经验,赶紧收藏!” 有详细介绍,有需要的同学可以直接前往阅读。
如出现类似 PocoNoSuchNodeException: Cannot find any visible node by xxx
的报错,则表明查找控件失败,需要检查控件的定位方式是否正确,当前页面是否存在此控件等。
多出现于截图脚本:
一种情况是,当前页面存在多个相同的截图,实际运行时没有点击到你的真实目标上面,此时可以通过局部识图、或者调整截图的 target_pos
来辅助你定位到你的真实目标上面。
另外一种情况是,识别到了毫不相干的错误的目标上,有可能是图像阙值比较低,混入了错误的结果,可以尝试调整阙值过滤错误的结果。
常出现于Poco控件点击脚本中:
首先我们可以借助IDE辅助窗的检索控件功能,把鼠标移动到对应的控件上面,看看锁定控件的框框是否出现了偏移,如出现了偏移,我们可以通过一些偏移修正,或者去掉手机的虚拟按键栏来解决,详见我们的官方教程文档: airtest.doc.io.netease.com/IDEdocs/dev… 。
当画面未加载完全或者不够稳定的情况下,我们立即进行了点击操作,很可能出现点击操作确实执行了,但应用没能响应这个点击的情况。
此时我们可以在点击之前添加足够时长的 sleep()
以保证我们的应用稳定后再进行后续的点击操作。
最后,我们提供了“点击不生效”的自检流程图,有需要的同学可以保存下来自查哦!
作者:AirtestProject