Airtest 快问快答,你们想问的这里都有!(第 1 期)

简介: Airtest 快问快答,你们想问的这里都有!(第 1 期)

前言



本期我们给同学们整理了答疑Q群中,26个同学们最容易问到的问题,后续我们还会持续整理更多常见问题帮助大家避坑哒~


1.如何输入文字?



① 使用airtest的 text() 接口:


touch(输入框)
text("文本")
复制代码


② 使用poco的 set_text() 接口:


poco("输入框").click()
poco("输入框").set_text("文本")
复制代码


另外,airtest和poco脚本可以混用,所以当输入框不支持 text() 接口输入时,可更换成poco的 set_text() 接口,同理,不支持poco输入时,也可以更换成airtest的 text() 接口输入。


2.minicap serve setup time out



屏幕初始化失败,常见于高版本MIUI设备或者模拟器等;先检查当前IDE是否为最新版本,不是请把IDE更新到最新版本;然后再尝试在connect设备之前,下拉勾选 use javacap ,再连接设备。


3.minitouch serve setup timeout



点击初始化失败,常见于安卓10或者10以上的设备,解决办法,检查当前环境的airtest版本是否为最新的(IDE更新到最新版本,使用本地python环境把本地环境的airtest更新到最新版本)。


4.Javacap server setup timeout



设备不适用于 javacap ,在IDE连接设备之前 请勿勾选 use javacap ,脚本连接设备的字符串也不要带 ?cap_method=JAVACAP。最后请确保当前使用的是最新版本的airtest。


5.如何显示坐标



顶部菜单栏,选项-设置,只勾选实时坐标显示,则显示绝对坐标;同时勾选实时坐标和相对坐标,则显示相对坐标。(Airtest使用绝对坐标系,poco使用相对坐标系)


# 点击坐标为[100,100]的位置
touch([100,100])
# 点击屏幕中心[0.5,0.5]
poco.click([0.5,0.5])
复制代码


6.图像识别不准确




7.设备连接不上



请参考官方文档的相关内容:AirtestIDE使用文档--设备连接--Android连接常见问题,然后根据自己的手机型号,查看1、2节内容。


不同品牌手机的相关设置名称仅供参考,不是所有的品牌型号相关的设置名称和位置都一样,所以教程中提到的设置仅供同学们参考,如找不到完全相同的设置,请同学们仔细查找类似的设置。


8.模拟器连接不上




9.poco定位报错找不到



  • 1)有时候IDE自动生成的poco定位脚本会非常长,层级也非常深,回放时可能出现找不到控件的情况;这时不建议同学们直接使用自动生成的定位脚本,可以根据UI树详情,另外编写更精简的定位脚本,推荐使用正则匹配来进行脚本定位会好一些。
  • 2)如果定位脚本是同学们自己编写的,请检查对应的属性或者层级关系,看是否是脚本错误而导致找不到元素。
  • 3)如出现单独选中调试脚本,可以找到控件,但实际运行脚本又容易找不到控件,建议在该条定位脚本之前添加足够的 sleep() ,确保画面跳转稳定后,再来查找控件。


10. no module named 'airtest'、‘poco’、‘airtest-selenium’等,找不到模块



在当前使用的python环境中,安装上缺失的对应模块:


pip install airtest
pip install pocoui #(不能安装poco,如安装了请卸载pip uninstall poco)
pip install airtest-selenium
复制代码


11.poco拿不到控件,poco的支持情况



目前只有原生应用可以直接使用poco(无需接入pocoSDK),非原生应用,比如各种游戏应用、H5小程序、混合开发的应用等,都不能直接使用poco拿取控件,绝大多数的游戏支持接入对应引擎的pocoSDK之后,可以获取控件信息。


12.辅助窗没有刷出UI树



  • 1)除原生应用之外,其余引擎都需要接入SDK才可以查看UI树;
  • 2)检查手机上是否已经自动安装上poco初始化相关的2个apk(pocoservice-debug.apkpocoservice-debug-androidTest.apk),未安装要手动安装上;
  • 3)安装输入法 Yosemite 并设为默认输入法
  • 部分厂商的手机需要额外的设置,请参考官方文档:AirtestIDE使用文档--设备连接--Android连接常见问题。


13.poco刷新时间



UI树的默认刷新时间为2秒,可以在选项--设置--poco,里面设置,设置完成后记得点击OK保存设置。


网络异常,图片无法展示
|


14.invalid syntax



典型的python语法错误,常见于脚本未换行、缩进错误、缺少一边 " 或者 等。


15.mac上出现很多个IDE的图标



尝试在IDE顶部菜单栏的选项--设置中,去掉自动补全设置的勾选。


16.record_pos、resolution表示什么



Template 类里面的参数,record_pos 计算坐标对应的中点偏移值相对于分辨率的百分比,匹配时会优先匹配这附近的画面;resolution 记录了截图时的手机分辨率。


Template(r"tpl1611559272215.png", record_pos=(-0.106, -0.035), resolution=(1080, 1920))
复制代码


如同学们使用的是自己截取的图片,不填 record_pos 参数也不会对识别效果产生很大影响,如想要计算,可参考如下源码:


网络异常,图片无法展示
|


17.怎么点击软键盘上面的搜索?输入后回车?



如需点击软键盘上面的 search 按钮,则:


text("文本",enter=False,search=True)
复制代码


同理,如需输入后回车,则 text("文本",enter=True) ,不需要回车则, text("文本",enter=False)


18.批量运行?多任务运行?多机运行?



目前官方文档上有提供多机协作用bat脚本做多机运行的实例,都在AirtestIDE使用文档--运行脚本的章节下面,另外利用多线程方法来进行批量运行可以参考网上的教程:



19.判断元素/截图存在



  • airtest的,判断截图目标是否存在于当前画面上:exists(截图)
  • poco的,判断元素是否存在:poco("xxx").exists()


20.等待元素/截图出现



  • airtest的,等待某个截图目标出现在当前画面上:wait(截图)
  • poco的,等待某个控件元素出现:poco("xxx").wait_for_appearance()


21.assert断言


  • 断言某个截图目标是否存在于当前画面上:assert_exists(截图)
  • 断言某个poco元素是否存在:assert_equal(poco(xxx).exists(),"True","xxx控件存在")


22.报错之后如何继续执行



使用 try-except 捕捉错误,让程序继续运行。


23.不能输入密码?密码界面黑屏?



应用的登录页面或者密码界面一般都不给截屏录屏的,同学们可以检查看看你的测试设备的设置里面,有没有安全键盘、防止恶意截屏录屏之类的设置,关掉就行。


24.怎么调用别的脚本?



airtest提供 using 接口可以用来调用别的 .air 脚本。详细使用方法和案例可以查看官方公众号的教程推文:一个方法帮你在主脚本里添加“子脚本”的运行


如使用 using 调用之后,发现程序仍是找不到脚本,建议检查 using 接口里面的脚本路径是否有误,另外还可以尝试在脚本开头把待引入的脚本路径添加到 sys.path 中:


#将test1.air的路径添加到sys.path里面
sys.path.append(r"D:\test\user\project\test1.air")
复制代码


25.poco定位脚本怎么写?



poco支持用基本选择器、相对选择器和空间选择器来编写定位脚本,另外还支持用正则表达式来匹配控件。详细教程和实例可以查看官方公众号的教程推文:



26.局部截图和局部找图



局部截图:


screen = G.DEVICE.snapshot()
# 局部截图
local = aircv.crop_image(screen,(0,160,1067,551))
复制代码


局部找图:


screen = G.DEVICE.snapshot()
# 局部截图
local_screen = aircv.crop_image(screen,(0,949,1067,1500))
# 将我们的目标截图设置为一个Template对象
tempalte = Template(r"png_code/设置.png")
# 在局部截图里面查找指定的图片对象
pos = tempalte.match_in(local_screen)
复制代码


相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
相关文章
|
3月前
|
Web App开发 测试技术 Python
零基础学会用Airtest-Selenium对Firefox进行自动化测试
零基础学会用Airtest-Selenium对Firefox进行自动化测试
|
移动开发 前端开发 算法
Selenium和Appnium、Airtest的底层原理
Selenium和Appnium、Airtest的底层原理
1060 0
|
4月前
|
人工智能 JavaScript Python
基于Airtest抖音养号源代码
基于Airtest抖音养号源代码
42 0
|
小程序 测试技术 开发工具
Airtest使用详解
Airtest是网易开源的一个跨平台的UI自动化测试框架。 该项目分为AirtestIDE、Airtest、Poco、Testlab四个部分,基于python脚本的方式,用于web、windows程序、app自动化测试。 AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写脚本;
386 0
|
IDE 开发工具
Airtest日常使用总结(一)
Airtest日常使用总结(一)
|
Android开发 Python
airtest中的adb使用
airtest中的adb使用
|
测试技术 Python
基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本
基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本
150 0
|
编解码 IDE 小程序
Airtest快问快答,你们想问的这里都有!(第2期)
Airtest快问快答,你们想问的这里都有!(第2期)
478 0
Airtest快问快答,你们想问的这里都有!(第2期)
|
IDE 测试技术 API
一篇文章带你快速上手Airtest
一篇文章带你快速上手Airtest
295 0
|
IDE Linux 开发工具
如何修改自己本地的Airtest源码
如何修改自己本地的Airtest源码
247 0