阅读 1480

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

此文章来源于项目官方公众号:“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定位报错找不到

  • 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)
复制代码

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


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

官方答疑 Q 群:654700783

呀,这么认真都看到这里啦,帮忙在文章左侧点一下点赞和收藏,给我一个支持把,灰常感谢~