• 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.图像识别不准确

    请参考官方公众号“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:	estuserproject	est1.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

    呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~

  • 相关阅读:
    C++中的explicitkeyword
    Stream使用教程
    Java实现最长回文串
    Java实现最长回文串
    Java实现最长回文串
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
    Java实现选择问题
  • 原文地址:https://www.cnblogs.com/AirtestProject/p/14335672.html
Copyright © 2020-2023  润新知