Airtest是啥?

简单理解:基于图像识别的UI自动化测试框架

俗人理解:截图即可完成自动化测试

适用场景:游戏、APP、PC软件,支持Window、Android、IOS

Airtest官方文档

官网:https://airtest.doc.io.netease.com/

快速上手系列:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/

AirtestIDE使用文档:https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/

官方博客:https://juejin.im/user/5dc8c4ba6fb9a04a95289e6e/posts

tips:如果会Python当然最好啦,因为在AIrtest脚本中是支持你写Python脚本滴

大概

目前博主业务中只涉及PC端软件,所以这里也只大概介绍如何针对PC端软件自动化测试

主要实际应用场景

  1. 一般用来跑一些主流程,看看是否会有概率性问题出现
  2. 验证偶现问题是否已bugfix
  3. 涉及一些重复性的操作

连接Window窗口

  • 若要选中桌面,直接选中桌面模式不要用【选定窗口】的方式来选择桌面
  • 推荐使用【选定窗口】,不推荐使用【搜索窗口】

.air脚本解析

实际上.air脚本文件时一个普通的文件夹,里面附带一个同名的.py文件,两者必须同名

初始化环境

 auto_setup(basedir=None, devices=None, logdir=None, project_root=None)

自动配置初始化运行环境,如果当前没有连接设备的话,就默认尝试连接Android设备。

如果auto_setup不传入任何参数的话,Airtest将会读取运行时命令行中传入的各项参数,来对环境进行初始化。(即:auto_setup(__file__))

运行脚本

方式一:使用命令行运行脚本

airtest run untitled.air --device 设备 --log日志

方式二:使用AIrtestIDE运行脚本

AirtestIDE安装目录 runner air脚本目录 --device 运行脚本的设备 --log 日志存放目录

"E:\AirtestIDE_2019-09-11_py3_win64\AirtestIDE" runner "C:\Users\user\Desktop\airteach.air" --device Windows:///198894 --log "F:/Airtest_logs\d77c305860c92615b15f443398ec3f57"

设备连接

  • 如果在执行命令行时连上设备(没有加上--device),可以在脚本代码中使用connect_device接口来连接设备。例:connect_device("Windows:///198894")
  • device() 接口可以获取当前使用中的设备,如果是window就会返回窗口句柄(198894)
  • Airtest支持一个脚本同时连接多个设备,使用set_current接口可以在多个设备中进行切换

核心包

  • airtest.core.api     跨平台核心包
  • airtest.core.android   Android平台专属包
  • airtest.core.ios     IOS平台专属包
  • airtest.core.win     window平台专属包

图片类Template介绍

touch(Template(r"tpl1556019871196.png", record_pos=(0.204, -0.153), resolution=(1280, 720)))

Template即Airtest封装的图片类,运行时会先去读取这张图片,然后在当前画面中找到最符合这张图片的坐标点,最后才执行touch点击

参数一:图片名

参数二:record_pos 根据这位置附近查找找不到符合条件的图片,再扩大寻找范围到整个画面

参数三:resoution 画面分辨率,如果在不同设备上回放脚本,Airtest将会对当前画面的分辨率按照比例进行一定的缩放,方便图片的跨分辨率匹配。

Airtest入门篇的更多相关文章

  1. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  2. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  3. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  4. 一个App完成入门篇(七)- 完成发现页面

    第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...

  5. [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

    本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...

  6. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  7. 转:OSGi 入门篇:生命周期层

    OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...

  8. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

  9. [Maven]Apache Maven 入门篇

    作者:George Ma 上 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 ma ...

随机推荐

  1. Echarts构建图表

    Echarts学习-构建图表 相信有很多的前端开发人员在开发Echarts图表的过程中都遇到对图表结构过无从下手,面对一大堆的专业词汇一脸懵逼的样子,在经过了一段时间的踩坑后,终于摸索出了一套完善的学 ...

  2. Python3使用过程中需要注意的点

    命名规则 变量 变量名只能是数字.字母或下划线的任意组合 变量名的第一个字符不能是数字 不能使用关键字作为变量名 变量的定义要具有可描述性 变量名不宜过长.不宜使用中文.拼音 常量(常用在配置文件中) ...

  3. 【t050】方程求解

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 要求Xi(i = 1,2,3,4)是一个[-T..T]中的整数,满足方程AX1 + BX2 + CX3 ...

  4. es6笔记 day2---函数默认参数、箭头函数、剩余参数

    函数变化: 1.函数默认参数 2.函数参数默认是已经定义了,不能再使用let.const声明 3.扩展运算符.rest运算符 ...就是扩展运算符,它的作用就是把数组给展开 结合函数使用传参,也可以将 ...

  5. 2018-2-13-C#-动态加载卸载-DLL

    title author date CreateTime categories C# 动态加载卸载 DLL lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...

  6. VisualStudio 2019 新特性

    很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性 在安装完成之后会看到创新的欢迎界面,这个欢迎界面支持输入关键字搜项目,同时支持选择语言平台 很多小伙伴都说 ...

  7. AutoCad .Net二次开发求两曲线最小距离

    测试结果: 主要思路:假设有两条曲线分别是c1和c2,把c1按照1的距离划分我这里用变量jd表示,得到一个曲线集合coll,然后遍历coll,得到coll中每一个曲线的两个端点,再用这两个端点分别求离 ...

  8. Linux忘记root密码后如何在grub界面中以单用户模式进入系统并重置密码的方法

    本文将介绍在Linux系统中忘记root用户密码的情况下,如何在gurb界面进入单用户模式并重置root用户密码.在单用户模式下,用户不需要输入任何密码即可进入系统并可以修改密码.实验步骤如下: 1. ...

  9. ELK学习实验003:Elasticsearch 集群安装

    前面已经介绍了Elasticsearch这个工具,并对单机安装做了简单介绍,现在使用三台机器做一个elasticsearch集群 一 环境准备 1.1 机器准备 1.2 同步时间 [root@node ...

  10. 洛谷$P$4301 $[CQOI2013]$新$Nim$游戏 线性基+博弈论

    正解:线性基 解题报告: 传送门! 这题其实就是个博弈论+线性基,,,而且博弈论还是最最基础的那个结论,然后线性基也是最最基础的那个板子$QwQ$ 首先做这题的话需要一点点儿博弈论的小技能,,,这题的 ...