此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

前言

本期我们给同学们整理了答疑 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.图像识别不准确

请参考官方公众号 “AirtestProject” 的教程推文:

7.设备连接不上

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

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

8.模拟器连接不上

9.poco 定位报错找不到

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 树

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.判断元素/截图存在

20.等待元素/截图出现

21.assert 断言

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)

详细教程和实例可以查看官方公众号的教程推文:使用 Airtest 最常遇到的几个需求,都帮你们实现好了


Airtest 官网http://airtest.netease.com/
Airtest 教程官网https://airtest.doc.io.netease.com/
搭建企业私有云服务https://airlab.163.com/b2b

官方答疑 Q 群:654700783

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~


↙↙↙阅读原文可查看相关链接,并与作者交流