精华内容
下载资源
问答
  • Airtest是一个跨平台的UI自动化框架,适用于游戏和App。 快速开始 各种运行: Airtest提供了跨平台的API,包括安装应用、模拟输入、断言等。 基于图像识别技术定位UI元素,你无需嵌入任何代码即可进行自动化。 扩展...
  • airtest-gui 注:已经不再维护 This is a PyQt GUI for . 安装 首先需要安装pyqt。点击下载 该pyqt依赖python2.7-32位版。并确保airtest已经安装。 解压后,双击start.bat启动gui程序。 使用 启动后的页面如下. 步骤...
  • Airtest安装包

    2020-07-26 14:45:38
    airtest是实现自动化测试的工具,不需要写代码,不需要安装,直接下载后解压,打开AirtestIDE即可使用
  • 因为没有mac我另辟蹊径找了再加上 (一个自动化脚本测试工具)进行FGO脚本编写.airtest支持蟒语言,所以用他来写脚本非常方便,使用airtest捕捉IOS模拟器的界面然后再在上面做一些基于图像识别或者像素点坐标的点击...
  • 此文章来源于项目官方公众号:“AirtestProject” 前言 如同点击操作一样,滑动操作也是测试过程中非常常用的操作。下文将向大家讲述Airtest和poco下的swipe如何使用以及应用swipe解决跳过APP介绍页和连续滑动等实际...
  • airtest导包和普通python的导包有点不一样,airtest导包需要用到using方法 比如在上面这样的目录结构里,想在test1case.py里引用common中的start方法,可以这样写: using('common.air') from common import start ...
  • 软件测试基础 AirTest测试框架的使用 Airtest平台查看测试报告.pptx
  • AirtestIDE
  • airtest

    2021-04-25 10:20:20
    简单记录下先: 问题: AssertionError: Click position out of screen. pos=[0.9546692, -0.166666672] 很明显,超屏了 原因: 通过poco的按钮定位,定位的是一个区域。 ...解决: 滑动视角,直至整个按钮显示屏幕中 ...

    简单记录下先:
    问题:
    AssertionError: Click position out of screen. pos=[0.9546692, -0.166666672]

    很明显,超屏了

    原因:
    通过poco的按钮定位,定位的是一个区域。
    如果你要点击的这个区域,没有完全展示在屏幕中,就会概率报错

    解决:
    滑动视角,直至整个按钮显示屏幕中

    展开全文
  • AirtestIDE: AirtestIDE是现成的GUI工具,可帮助您以用户友好的方式创建和运行案例。 AirtestIDE支持完整的自动化工作流程: create -> run -> report 。 Poco: 添加了直接访问主要平台和游戏引擎上的对象(UI小...
  • AirtestIDE 客户端

    2020-03-20 08:32:21
    - 基于64位Windows操作系统,Python3...- 双击AirtestIDE/AirtestIDE.exe即可启动 - 在部分机器上可能由于显卡兼容性问题,导致无法正确启动,或脚本编辑窗口无法编辑,可以双击目录下的`兼容模式启动.bat`文件来启动
  • 网易移动自动化工具,操作很简单,比appium还要容易上手,但不敢说比appium强大
  • Airtest

    2019-12-23 10:42:10
    1,通过。G.DEVICE.get_current_resolution() 获取当前屏幕的分辨率. 2,有直接的double_click方法, 3,在点击图片的时候注意写下这张图是在什么分辨率下截取的,这样的话,就... ... 不然就输入失败,然后就直接出问题 ......

    1,通过。G.DEVICE.get_current_resolution()  获取当前屏幕的分辨率. 

    2, 有直接的double_click 方法,

    3, 在点击图片的时候注意写下这张图是在什么分辨率下截取的, 这样的话,就可以适配不同的屏幕了.

    4, 想要输入的时候, 首先点击输入框, 然后要隔一会之后再执行输入, 要等输入已经准备完毕。  不然就输入失败, 然后就直接出问题

     

     

    展开全文
  • 基于图像识别的UI自动化,基于控件识别的UI自动化,面向测试开发的统一接口,面向产品的持续集成与大规模集群测试
  • AirtestIDE

    2018-04-04 17:18:23
    AirtestIDE
  • 之前写过一个抖音的虽然不全但是抛砖引玉是可以了 今天这个陀螺世界的,看ad得金币点转盘、加速、任务都搞了一下,效果还可以分享给大家。
  • Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具
  • 本次更新包含编辑器AirtestIDE的更新,版本提升至1.2.10;Airtest库版本更新至1.2.0。更新内容详见下文~ AirtestIDE更新 新功能 1. 新增图像识别算法 mstpl 新增图像识别算法 mstpl ,该算法提升了图像识别的准确性...

    前言

    本次更新包含编辑器AirtestIDE的更新,版本提升至1.2.10;Airtest库版本更新至1.2.0。更新内容详见下文~

    AirtestIDE更新

    新功能

    1. 新增图像识别算法 mstpl

    新增图像识别算法 mstpl ,该算法提升了图像识别的准确性。同学们可以将自己的AirtestIDE更新到最新版本1.2.10(本地环境的更新Airtest至1.2.0)来使用这个新算法。

    相应的,图片编辑器做了相关的一些小改动,可以调节新算法的2个专属参数:

    在这里插入图片描述

    其中 scale_max 用于调节匹配的最大范围;scale_step 用于控制搜索比例步长,示例:

    from airtest.core.api import *
    
    touch(Template("search.png", scale_max=800, scale_step=0.005))
    

    我们也会在后续文档中,提供如何调节相关参数,以更好地提升图像识别效果的方法。

    2.自动适配连接有问题的设备,无需勾选备选参数

    在更新到最新版本的AirtestIDE1.2.10后,连接手机时可以不再需要勾选备选的设备连接参数了,所以请同学们将IDE版本更新至1.2.10之后,connect 设备之前请检查下是否已经把备选连接参数都取消了:

    在这里插入图片描述

    例如,原本模拟器连接时,需要勾选 use Javacap 选项,现在无需勾选只需要直接连接即可。

    另外,我们删除了 cap_method=MINICAP_STREAM 这一参数,请同学们注意不要在脚本运行时传入 MINICAP_STREAM ,否则可能出现报错导致脚本无法正常运行。

    3.IDE自带环境中的Airtest库更新至1.2.0版本

    AirtestIDE自带的Python环境,里面的Airtest库更新至1.2.0版本;如在IDE设置了本地Python环境,则需要手动将对应本地环境的Airtest更新至最新版本1.2.0。

    4.对Android12支持较差,可等待后续版本支持

    Android12目前的支持情况比较差,图像画面显示速度很慢,请同学们耐心等待后续的版本更新。

    bug修复

    1. 修复1.2.9拔插手机出现内存泄漏的问题

    修复了IDE1.2.9版本直接插拔手机后,内存会不断上涨的问题。

    2. 修复部分机型横屏图像显示错误

    修复了部分机型在横屏时,屏幕图像显示错误的问题。

    更新与下载

    1. 覆盖更新

    使用旧版本IDE的同学,打开IDE时收到新版本的更新提示,可以直接选择覆盖更新,需要注意的是,选择覆盖更新之前,请同学们检查下有没有把脚本保存在AirtestIDE的文件夹目录下,如有,请备份脚本后再进行覆盖更新。

    2. 到官网上下载最新版本

    不想进行覆盖更新的同学,也可以直接到我们的AirtestProject官网上下载最新版本的IDE,请认准我们的官方网址:http://airtest.netease.com/index.html 。(注意不要在非官方网站上下载我们的AirtestIDE哦~)

    Airtest库更新

    新功能

    1.新增:图像识别算法mstpl

    我们新增了一个改良版本的模板匹配识别算法,能够大幅度增加原有的模板匹配的成功率,更好地适配分辨率变化的场景。

    将Airtest更新至1.2.0以上版本即可使用,如果您正在使用AirtestIDE,也请同步更新至1.2.10以上版本,最新的版本已经将该算法设置为首选使用的算法。

    在这里插入图片描述

    在Template图片对象初始化时,与新算法有关的参数如下:

    • 新加入 scale_max :新算法专用参数,用于调节匹配的最大范围,如果要查找的目标UI很小的话,可以适当增大这个数值,默认值 800, 推荐值 740, 800, 1000 取值范围 [700 , 2000]
    • 新加入 scale_step :新算法专用参数,用于控制搜索比例步长,如果要查找的目标UI很小的话,可以适当减小这个数值,默认值0.005,推荐值 0.02, 0.005, 0.001 取值范围 [0.001, 0.1]
    2.接口改动:连接手机时无需指定参数

    在Airtest 1.2.0以上版本中,我们不再希望大家连接手机时,手动指定各连接参数了,包括 cap_methodtouch_methodori_method

    因此我们进行了一些改动,在初始化手机时,如果遇到问题,Airtest将会自动尝试进行兼容,并选取备用方案进行连接,直到成功为止。

    改动详情可以参看我们github上的更新文档:https://github.com/AirtestProject/Airtest/releases/tag/v1.2.0 。

    bug修复

    1.解决了旧版本拔插手机内存泄漏的问题

    nbsp增加了一个 auto_kill 参数,在手机断开连接时,能自动杀掉socket,避免内存泄露的问题。使用旧版Airtest的同学如遇到内存泄漏问题,可直接将使用的Airtest更新到最新的1.2.0版本来解决此问题。

    2.解决了几个结束时未完全关闭io流的warning
    3.兼容了在脚本运行时传入的脚本路径末尾带有/的情况
    4.重新加入了SIFT算法

    SIFT算法专利已经解禁,因此重新加入了SIFT算法作为默认算法,但是受限于opencv的版本号,不是所有的版本号都可以直接使用。

    5.修复部分横屏设备显示错误的问题

    修复了在部分新型号手机上,在横屏状态时获取到的display_info尺寸相反的问题,这个问题会导致在IDE上的横屏状态下,屏幕画面显示错误,例如vivo iQOO Neo5,华为Mate40Pro等。

    更新方式

    更新Airtest库到最新版本:

    pip install -U airtest
    

    如使用的是AirtestIDE且未设置本地Python环境,则将IDE更新到1.2.10版本即可。

    更新版本之后的常见问题及解决办法

    覆盖更新失败

    如进行IDE的覆盖更新之后,发现缺少.exe文件,或者不能正常打开IDE,大概率是覆盖过程中出现了某些异常。

    无需惊慌,直接删除问题版本,到我们官方网站上重新下载最新的版本即可。(官方网址:http://airtest.netease.com/index.html)

    如覆盖更新之后,发现脚本全部丢失,则大概率是把脚本保存到了IDE的文件夹目录下,覆盖更新时把脚本删除了;所以务必请同学们再进行覆盖更新操作之前,检查是否将脚本保存到了IDE的文件夹目录下!!!

    三星部分型号手机画面不能占满窗口

    如使用1.2.10版本的AirtestIDE连接三星的部分型号设备,出现设备画面没有占满整个设备窗的情况,请在“设置”-“显示”中将“屏幕分辨率”调至 “WQHD”:

    在这里插入图片描述

    点击失效/偏移/不能点击

    请先查看完推文 “为什么我的点击“不生效”?!” 的内容之后,了解清楚自己的点击失效究竟属于哪种情况,然后再将必要信息提交issue:https://github.com/AirtestProject/Airtest/issues。

    或者在我们的官方答疑Q群(654700783)中@ 网易Airtest@晓娟,给出详细的问题描述。

    连接模拟器失败/不能点击模拟器

    1.2.10版本的IDE可以无需勾选任何参数,直接连接上大部分主流的模拟器,如最新版IDE不能连接模拟器,请排查以下问题:

    • 确保电脑里面的ADB都是一个统一的版本
    • 确保模拟器上安装好了Yosemite.apk
    • 确保模拟器已经更新到了最新版本

    如上述问题都已确认完毕,连接模拟器仍出现黑屏、不能点击的问题,请尝试只勾选 use javacap 来解决,如还未能解决,可以将此情况反馈到issue上:https://github.com/AirtestProject/Airtest/issues。

    使用最新版本图像识别报错

    如果在图像识别时遇到问题或异常报错,请将当前界面截图、与脚本中使用的图片一起提交issue:https://github.com/AirtestProject/Airtest/issues。

    同理也可以在我们的官方答疑Q群(654700783)中@ 网易Airtest@晓娟,并给出对应的界面截图和脚本中使用的图片,方便我们进行排查。

    使用新算法时出现结果误判

    这次版本的Airtest的图像识别算法虽然更容易识别,但是误判率也会更高,我们会很快出一个版本来优化这个问题。

    展开全文
  • airtest
  • Airtest学习(二)

    2020-12-27 23:15:52
    """ 可以使用命令行:airtest info 脚本路径, 可以获得airtest解析出来的脚本信息,类似这样的返回值 {"name": "untitled.air", "path": "untitled.air", "author": "user", "title": "脚本标题", "desc": "用例...

    学习笔记-airtest自动化

    笔记目录:https://blog.csdn.net/weixin_42717928/article/details/114343085

    昨天下了雨,今天刮了风,明天太阳就出来了

    录制视频

    报告

    • 自定义截图压缩精度
    • 自定义报告截图的最大尺寸
    • 局部截图/区域截图
    • 用log()接口在报告中显示信息/报错

    截图

    脚本全局设置

    Firebase打包脚本

    进一步熟悉

    • 滑动
    • 引用其他脚本
    • 输入无法使用解决方法
    • 输入和删除文字
    • 输入完毕后的回车与搜索键
    • 输入随机数
    • poco获取节点的text属性
    • 自定义log级别
    • 模拟鼠标右键

    poco的元素定位

    坐标介绍

    Airtest图像识别原理相关

    截图技巧

     

     

     

     

    一:录制视频

    airtest1.1.6支持 在 --recording 参数后面加上一个文件名来命名录屏文件 ,例如 --recording test.mp4 ,如果有不止一台手机在运行,会把文件命名为 手机名_test.mp4 。

    #开始录制/结束录制
    start_recording() 和 stop_recording()

    【回顾】在使用纯py文件编写脚本的时候,如使用了android手机,初始化连接

    if not cli_setup():
        auto_setup(__file__, logdir="./log", devices=["Android://127.0.0.1:5037/FIFIMFFEPVAIWCU8"])
    

    devices:adb server所在主机的ip:adb port  /  序列号,其中FIFIMFFEPVAIWCU8是序列号,通过这种方式可以查出

     

    API:https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.android.recorder.html?highlight=recording#airtest.core.android.recorder.Recorder.start_recording

    录屏的这两个方法 属于 Recorder(adb) 类,需要实例化这个类,才能通过实例去调用里面的方法

    adb = ADB(serialno="FIFIMFFEPVAIWCU8")
    recorder = Recorder(adb)
    
    # 开始录屏
    recorder.start_recording(max_time=10)
    sleep(3.0)
    # 结束录屏
    recorder.stop_recording(output="dy.mp4")

    在录制的时候,涉及密码输入,会出现黑屏,在安全设置中,把安全键盘之类的设置关掉 ,或者是 关掉其它一些防止恶意截屏录屏的设置。

     

     

    二:报告

    __author__ = "漫步云端"
    __title__ = "打开我的页面"
    __desc__ = """
    前提:无;
    步骤1:打开app;
    步骤2:点击我的;
    步骤3:断言;
    """

    可以使用命令行:airtest info 脚本路径, 可以获得airtest解析出来的脚本信息,类似这样的返回值

    {"name": "untitled.air", "path": "untitled.air", "author": "user", "title": "脚本标题", "desc": "用例描述"}

     

     

     

    三:截图

    (1)自定义截图压缩精度

    ① 使用命令行启动,airtest run ... --compress quality

    ② 在脚本中自定义,优先级高于命令行,取值范围是1-99的正整数,airtest默认取10

    import airtest.core.api import *
    ST.SNAPSHOT_QUALITY = xxx  # [1, 99]
    
    # 在报告的该touch步骤中,保存的截图的精度为全局精度xxx
    touch(xx)
    # snapshot保存的截图精度也是全局精度xxx
    snapshot(filename='./ok.jpg',msg="完成截图")

    ③ 设置某张图片的压缩精度

    snapshot(quality=my_quality)

     

    (2)自定义报告截图的最大尺寸

    # 设置截图尺寸不超过600*600,如果不设置,默认为原图尺寸
    ST.IMAGE_MAXSIZE = 600
    
    # 在报告的该touch步骤中,保存的截图尺寸不超过600*600
    touch(xx)  
    # 截图质量为90,尺寸不超过1200*1200
    snapshot(filename="ok1.png", msg="ok1", quality=90, max_size=1200) 
    # 不设置的情况下,默认采用ST中的全局变量的数值,即600*600
    snapshot(msg="ok2")

     

    (3)局部截图/区域截图

    如(0,160)(1067,551)

    # crop_image()方法在airtest.aircv中,需要引入
    from airtest.aircv import *
    
    screen = G.DEVICE.snapshot()
    
    # 局部截图
    screen = aircv.crop_image(screen,(0,160,1067,551))
    # 保存局部截图到log文件夹中
    try_log_screen(screen)

     

    (4)用log()接口在报告中显示信息/报错

    【回顾】airtest报错in recv raise socket.error("socket connection broken")

    原因是连接参数少写了一个

    【回顾】看下API:airtest.core.android.adb module,导包写from airtest.core.helper import *,避免忘记导包

     

    args, 可以是字符串或是 traceback 对象(异常),现在还支持传入非字符串

    timestamp, 参数可以自定义当前这条 log 的时间戳,默认为当前时间

    desc , 自定义一个 log 标题

    ata = {"test": 123, "time": 123456}
    
    # 第一条log,步骤名显示title,截取一张屏幕截图
    log(data, timestamp=time.time(), desc="title", snapshot=True)
    
    # 第二条log,标记为报错步骤并截取一张屏幕截图
    try:
        1/0
    except Exception as e:
        log(e, snapshot=True)
    
    # 第三条log,显示传入的字符串
    log("中文")
    
    
    
    # 这样也行
    import traceback
    try:
        xxxx
    except:
         log("出错啦", traceback. format_exc())

     

    四:脚本全局设置

    airtest.core.settings里,提供了部分全局默认属性,可以修改全局设置,如:

    from airtest.core.api import *
    # airtest.core.api中包含了一个名为ST的变量,即为全局设置
    ST.THRESHOLD = 0.8
    

    如touch,如果在里面有指定threshold,则使用指定的,如果没有,则默认使用全局属性。

     

    常见的全局属性:

    • RESIZE_METHOD = staticmethod(cocos_min_strategy)

    分辨率适配规则

    https://airtest.doc.io.netease.com/IDEdocs/airtest_framework/1_script_settings/

    比如,参数都不用动,中间的内容是根据原属性,改为我要的缩放规则即可

    • THRESHOLD = 0.7 # [0, 1]

    图像识别的阈值

    • THRESHOLD_STRICT = 0.7 # [0, 1]

    只用于assert_exists(图片)接口

    • OPDELAY = 0.1

    每一个步骤的操作之间都会有一小段时间间隔,默认是0.1秒

    • FIND_TIMEOUT = 20

    图像查找时间,使用了该接口:touch、double_click、swipe(如果是a图片滑到b图片,只有a图片使用了该接口)、wait(在没有使用timeout的情况下使用了该接口)、assert_exists

    • FIND_TIMEOUT_TMP = 3

    图像查找时间,使用了该接口:swipe(如果是a图片滑到b图片,只有b图片使用了该接口)、exists、assert_not_exists

    • PROJECT_ROOT = os.environ.get("PROJECT_ROOT", "") # for using other script

    可以通过设定一个默认项目根目录PROJECT_ROOT,让使用using接口时能够在当前根目录下寻找别的子脚本,无需填写完整路径,让脚本之间相互调用使用更加方便

    from airtest.core.api import *
    
    ST.PROJECT_ROOT = "/User/test/project"
    # test1.air的实际路径为/User/test/project/test1.air
    using("test1.air")
    
    #调用其他的脚本
    from test1 import test

     

     

    五:Firebase打包脚本

    限制:

    • 安卓原生应用的poco无法使用,因为无法从一个app去启动另外一个app。但是游戏引擎的poco均可使用。
    • 部分airtest接口,无法使用该方式执行,例如
      • clear_app
      • install_app
      • uninstall_app
    • 由于启动脚本时,会出现kivy闪屏图片,所以脚本以start_app()开始
    • 打包时,因为涉及到文件删除操作,所以不要使用目标包体的目录(有些用户习惯性直接在生成包体的目录打开命令行安装,会导致无法进行下一次打包)

     

    原理:

    步骤

    1(环境配置):java(jdk,非jre)、配置jdk环境,输入jarsigner,没报错即可(如果出现不是内部命令,则将环境配到系统变量即可)

    2(打包流程)

    然后将该apk和被测应用安装在手机上,

    然后用adb指令启动测试脚本 adb shell am instrument -w com.netease.open.airbase/android.support.test.runner.AndroidJUnitRunner

     

     

    六:进一步熟悉

    (1)滑动

    swipe_along目前只有在使用了默认的 minitouch 模式(Android10使用 maxtouch )时才能使用

    自定义点击或滑动操作的方案:https://airtest.doc.io.netease.com/IDEdocs/faq/3_api_faq/

    (2)引用其他脚本

    如果需要引用的子脚本路径统一都放在某个目录下,可以通过设定一个默认项目根目录 PROJECT_ROOT ,让使用 using 接口时能够在当前根目录下寻找别的子脚本,无需填写完整路径

    如jb1.air路径是/User/test/project/jb1.air
    
    其他脚本引用它则:
    ST.PROJECT_ROOT = "/User/test/project"
    using("jb1.air")
    
    记住别漏了导入方法语句
    from jb1 import xx方法

    (3)输入无法使用解决方法

    #如果遇到一些设备无法使用text(),可以这样
    # 方法一
    dev = init_device("Android")
    dev.shell(shell("input text '123456'"))
    
    # 方法二
    dev = connect_device("Android://127.0.0.1:5037/P7CDU18C27000473")
    dev.shell(shell("input text '123456'"))
    
    # 方法三
    init_device("Android", ime_method="ADBIME")
    text("123456")

    (4)输入和删除文字

    #删除输入框内容
    for i in range(10):
        keyevent("67")
    #poco写法:将输入框内容设置为空字符串
    poco("xxx").set_text("")
    
    
    # 设置文字
    # airtest写法:
    text("哈哈")
    #poco写法:注意XXX是可输入控件
    poco("XXX").set_text("哈哈")

    (5)输入完毕后的回车与搜索键

    text接口有默认参数enter=True,即输入完成后回车,部分输入框是search=True

    注意:输入法的回车和换行不同于keyevent事件

    (6)输入随机数

    #输入随机数
    import random
    r = random.randint(1,100)
    text(str(r))

    (7)poco获取节点的text属性

    #poco获取节点的text属性
    a = poco(text="cs")
    a.get_text()
    a.get_name()

    (8)自定义log级别

    import logging
    logger = logging.getLogger("airtest")
    logger.setLevel(logging.ERROR)

    (9)模拟鼠标右键

    # 获取当前连接的窗口
    dev = device()
    # 拿到鼠标,并模拟鼠标的右键点击操作
    dev.mouse.right_click(coords=(1920,100))

     

     

     

     

     

    七:poco的元素定位

    (1)借助IDE的poco辅助窗生成元素定位脚本

    检视器按钮(前两个都行),点元素,就能看到该元素所在的位置,点那个定位就能生成脚本(区别是第一个按钮锁住页面)

    点录制按钮,点元素,然后就生成了脚本,去掉.click()即可

    (2)利用基本选择器进行元素定位

    (3)利用相对选择器进行元素定位

    (4)利用空间顺序选择器进行元素定位

     

     

     

     

    八:坐标介绍

    (1)Airtest的坐标系

    # Airtest的坐标系
    # (1)touch-使用的是(x, y)绝对坐标
    # (2)swipe-滑动起点和终点使用的是(x, y)绝对坐标

     

     

    (2)poco的坐标系

    poco点击默认是点在 anchorPoint  [ˈæŋkə(r) pɔɪnt]上的,每个UI都会有一个 anchorPoint ,也就是检视器(Inspector)中UI包围盒的那个红点,大部分情况下 anchorPoint 都在UI包围盒的正中央

    # (1)使用局部坐标系的click接口
    
    # 引入局部坐标系来表示相对于某UI的坐标。
    # 局部坐标系以UI包围盒左上角为原点,向右为x轴,向下为y轴,包围盒宽和高均为单位一。(如上图)
    # 局部坐标系可以更灵活地定位UI内或外的位置,例如(0.5, 0.5)就代表UI的正中央,也就相当于我们上文中默认的anchorPoint;超过1或小于0的坐标值则表示UI的外面。
    
    # 点击 anchorPoint 以外的其他指定位置时,可以传一个参数到 click 方法中,这个参数是一个用list或tuple表示的2维向量,
    # 其 [x, y] 值分别表示相对于包围盒左上角的偏移量,左上角为 [0, 0] ,右下角为 [1, 1] 
    poco(text="口红").click([0,0])
    
    # 改变以anchorPoint为起点,也可以使用focus方法
    poco(text="口红").focus([0,0]).click()
    # (2)使用归一化坐标系的swipe接口
    
    # 将屏幕宽和高按照单位一来算,这样UI在poco中的宽和高其实就是相对于屏幕的百分比大小
    # 好处:不同分辨率设备之间,同一个UI的归一化坐标系下的位置和尺寸是一样的,有助于编写跨设备测试用例
    # 屏幕正中央一定是(0.5, 0.5)
    
    # 也是以 anchorPoint 为起点,改变起点用focus 方法

    假如在游戏中(如中心点(0.5,0.5)),那我想往右上走(如走到(0.9,0.1)),那我的偏移量为(0.4,-0.4),距离为sqrt(0.4*0.4)

    cs = poco("xx")
    cs.swipe('up')
    # 向上向右滑动,duration是滑动时长
    cs.swipe([0.4, -0.4], duration=0.5)

     

     

     

     

     

    九:Airtest图像识别原理相关

    默认情况下,Airtest会尝试用 SURFMatching 、TemplateMatching 和 BRISKMatching 这三种算法来进行图像识别

    其中 TemplateMatching 属于 模板匹配算法,而 SURFMatching 和 BRISKMatching 则属于 特征点匹配方法。简单点说,模板匹配算法依赖 特征向量 来进行图像匹配,而特征点匹配算法则是依赖于 图像的特征点 。

    # 程序如何根据算法结果判定是否找到匹配的截图?
    # 阙值 和 可信度 ,他们的取值范围都是[0,1]。在每一条图像识别的脚本中,都会有1个用于结果筛选的阙值,默认值为0.7
    
    # 执行截图脚本时
    # 如果可信度>阙值,程序判定找到匹配结果
    # 如果可信度<阙值,程序判定未找到匹配结果,循环用三种算法继续查找直到超时

     

     

     

     

     

    十:截图技巧

    (1)截取图标时尽量不要截入过多的背景内容

    理论上图1的识别度比图2高,不过我看了一下精度,图2的更高

     

    (2)启动应用

    start_app() 支持Android和iOS设备,相对用截图脚本来启动应用

    start_app("包名")

     

    (3)用image editor查看截图识别结果的可信度

    双击截图,进入图片编辑器,点击左上角的 snapshot+recognition 按钮

     

    (4)用target_pos点击截图的不同位置

    默认情况下,我们的截图脚本都是点击截图的中心位置,即 target_pos=5
    对于一张截图来说,总共有9个 target_pos ,当我们把截图的 target_pos 设置成不同的值时,脚本会点击在截图不同的位置上

    方法1:双击截图,进入图片编辑器,可以修改该值

     

    方法2:可以直接写成代码的形式

    touch(Template(r"1.png", target_pos=6, record_pos=(-0.434, -0.773), resolution=(900, 1600)))

     

     

    (5)用坐标进行点击/滑动

    如app的介绍页,由于图片经常变化,维护麻烦,可以使用坐标

     

     

     

    (6)用keyevent("BACK")替代返回的截图脚本

    Android设备可以使用这个

     

     

    (7)画面切换

    画面切换的时候,可以多使用wait或者sleep,再进行点击操作

     

     

    (8)调整阙值

    调的太低,容易把错误的结果通过

    调的太高,容易把正确的结果不通过

    方法1:双击截图,进入图片编辑器,可以修改该值

    :方法2:

    touch(Template(r"1.png", threshold=0.8, record_pos=(-0.021, 0.121), resolution=(900.0, 1600.0)))

    方法3:全局的 threshold

    from airtest.core.setting import Settings as ST
    ST.THRESHOLD = 0.7  # 其他语句的默认阈值

     

    注意:只适用于除断言语句之外的截图语句

    断言只能通过下述方式进行设置:

    from airtest.core.setting import Settings as ST
    ST.THRESHOLD_STRICT = 0.7

     

     

     

    (9)自定义语句(例如截图列表)

     

     

    (10)通过poco的选择节点

    比如删除(多选框)

     

     

    (11)脚本测试遇到的情况

    ①写好的截图脚本在更换一台不同分辨率的手机/更换一个环境之后,就经常遇到执行失败的报错:

    airtest.core.error.TargetNotFoundError: 'Picture Template(E:\\untitled.air\\1.png) not found in screen'

    原因:图片识别有误差,在不同分辨率,或画面发生了一定变化

    解决方法:修改截图

     

    ②运行后查看报告,发现识别出来的位置是一个错误的位置,但是airtest当做是正确的

    解决方法:调整截图/阀值

     

    ③运行后查看报告,报告里能看到识别到了正确的位置,也点击成功了,但是实际上没有成功点到。

    原因:如果有连续点击操作,屏幕内容可能会不断变化,有时候会导致脚本明明运行到了点击操作却发现没有生效的情况。这是因为屏幕内容切换速度过快,界面还未稳定的同时airtest就进行了元素识别和操作,导致没有成功点击到对应元素。

    解决方法:给个等待时间

     

     

    (12)利用灰度图识别

    如有三个图片是一样的,前两个背景是红色,第三个是黄色
    勾选了rgb,或者在代码加入rgb=True,则进行强制使用色彩图片识别,airtest会将红色的认为是相同的

     

     

    展开全文
  • AirtestIDE 是一个跨平台的UI自动化测试编辑器,适用于游戏和App。 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程 支持基于图像识别的 Airtest 框架,适用于所有Android和Windows游戏 支持基于UI...
  • AirTestIDE工具安装及使用说明
  • Android-Airtest.zip

    2019-09-17 12:12:24
    Android-Airtest.zip,游戏和应用程序的ui自动化框架,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
  • Airtest是一款跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。 安装 这部分说明了如何在本地python环境中安装Airtest测试框架。如果你需要使用GUI工具,请从官网直接下载AirtestIDE使用。 系统...
  • [1054]Airtest的探索使用

    千次阅读 2021-10-12 19:31:37
    文章目录Airtest的简介关于自动化测试市面上常见的UI自动化测试工具以及优缺点环境的搭建Android真机连接Android真机USB连接远程连接无线连接录制一个简单的.air 脚本解析什么是.air 脚本初始化环境设备连接模拟点击...
  • Airtest学习(一)

    千次阅读 2020-12-07 22:19:14
    Airtest的官网:http://airtest.netease.com/ AirtestIDE的使用教程文档:http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html ...
  • Airtest是一个跨平台的UI自动化测试框架,适用于游戏和App
  • Airtest简单上手讲解

    2021-03-19 23:10:48
    Airtest是网易开发的手机UI界面自动化测试工具,它原本的目的是通过所见即所得,截图点击等等功能,简化手机App图形界面测试代码编写工作。 安装和使用 由于本文的目的是介绍如何使用Airtest来开发App爬虫,那么...
  • 网站:依赖chromdriver,注意浏览器版本相对应,mac把驱动程序放在/ usr / local / bin Windows上venv里的脚本Android:第一运行最好通过airtest连接一遍如果报错:Nonetype error,那么就是adb赋权问题,sudo ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,993
精华内容 1,197
关键字:

Airtest