带你从0开始学习自动化框架Airtest
现在市面上做UI自动化的框架很多,包括我们常用的Web自动化框架Selenium,移动端自动化框架Appium。
虽然Selenium和Appium分属同源,而且API都有很多相同的地方,可以无损耗切换,但是还是需要引入不同的库,而且偏向UI层面的自动化有一个很大的痛点,就是元素定位会差一些,所以在这个过程中,通过各种各样的手段,比如引入OCR图像识别技术,很多都会使用原生的open-CV,在这个过程中,识别率就是我们要解决的一大问题。
在这种情况下,有一个框架横空出世,就是网易游戏推出的Airtest Project。
01、组件构成
Airtest Project项目由几个组件构成:
- Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS。
- Poco:是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用。
- AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写Airtest和Poco代码。
除了以上的可被直接使用的几个组件之外,网易游戏还提供了云测试平台AirLab,还有私有化手机集群技术方案。可以拿来做商业化方案。
刚刚前面讲了,Airtest Project主要还是用来做UI自动化,其实UI层自动化从很早之前的商业方案到现在的开源方案,算是自动化测试领域发展比较久的一个方向,但是基于UI层的自动化测试框架要复杂很多,从平台种类上来讲,有Windows Client,Linux图形化Client,Web UI,Android UI,iOS UI,还有现在比较新的小程序等,这些都是对于UI层自动化框架的挑战。
02、主流框架
01、Selenium
首先介绍的是历史悠久的Selenium,Selenium当前使用最广的是WebDriver组件,WebDriver是一款开源的Web应用自动化测试框架,可以通过操作浏览器原生API来完成对浏览器的操作。
- Selenium支持Windows,OSX以及Linux 图形化操作系统。
- Selenium也支持当前主流浏览器,Chrome,FireFox,Safari,Windows Edge,IE,Opera,还支持一些无界面浏览器,比如Chrome headless,Phantomjs等。
- Selenium也是跨语言的框架,可以支持Python、Java、Ruby、C#等各种语言。
Selenium运行原理:

通过上面的介绍,我们可以看出来,Selenium主要还是基于浏览器的,那接下来,我们来看一下常用的移动端框架Appium。
02、Appium
Appium是一款基于移动端的开源的自动化测试工具,支持IOS、Android、Windows和Mac应用。
- Appium支持Windows,OSX以及Linux 图形化操作系统。
- Appium也是可以支持多种语言的,采用了C/S的设计模式,扩展了WebDriver协议,因此Client用Python、Java、Js/Nodejs、Ruby、OC、C#等各种语言来实现。
Appium原理介绍:
Appium的核心是一个遵守REST设计风格的Web服务器,他会用来接受客户端的连接和指令。由于统一的接口设计,客户端便可以用多种语言来实现,从而用自己喜欢的语言来实现测试用例。
服务端收到测试指令后会发送给设备,在设备层则使用了设备商提供的原生测试框架,比如IOS的XCUITest Driver和UIAutomation Driver, 安卓的UIAutomator和UIAutomator2等等。
Appium Android 原理图:

Appium iOS原理图:

03、Airtest Project
Airtest Project是一款由网易研发并开源的自动化测试框架,相比于其他的自动化测试框架,主要有如下两个优势:
大幅度降低自动化脚本的编写和维护成本,Airtest Project希望能够通过一种所见即所得的方式完成脚本的录制,即使测试人员不会编程不懂脚本,也可以通过正常用户的点击拖拽等操作,自动完成脚本的录制,从而大幅度降低企业和项目的自动化维护成本。
解决游戏测试的痛点,Airtest Project希望能够通过对游戏的不同引擎做支持,成为一个真正意义上的跨引擎跨平台的自动化测试平台。
框架图:

可以看到,底层的主要测试框架主要是Airtest和Poco,二者的区别在于:
- Airtest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。
- Poco:基于UI控件搜索的自动化测试框架,其核心优势是除了对Android、IOS之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和H5应用。
整套框架配备了非常实用的IDE,通过AirtestIDE, 可以轻松的完成脚本的录制、测试任务的执行以及最后测试报告的生成。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:
带你从0开始学习自动化框架Airtest
现在市面上做UI自动化的框架很多,包括我们常用的Web自动化框架Selenium,移动端自动化框架Appium。 虽然Selenium和Appium分属同源,而且API都有很多相同的地方,可以无损耗切换,但是还是需要引入不同的库,而…...
MySQL扩展语句和约束方式
一、扩展语句 复制,通过like这个语法直接复制bbb的表结构。只是复制表结构,不能复制表里面的数据 把bbb表里面的数据,复制到test,两个表数据结构要一致 创建一张表,test1,数据从bbb来,表结构也是bbb delete…...
用起来顺手的在线表结构设计软件工具Itbuilder,与你共享
在线表结构设计软件工具需功能简洁,去除晦涩难懂的设置,化繁为简,实用为上,上手非常容易,这些itbuilder统统可以做到。 itbuilder是一款基于浏览器开发的在线表结构设计软件工具,借助人工智能提高效率&…...
Android开发知识学习——HTTPS
文章目录 定义HTTPS连接HTTPS 连接建立的过程课后题 定义 HTTP Secure / HTTP over SSL / HTTP over TLS SSL:Secure Socket Layer -> TLS Transport Layer Security 定义:在HTTP之下增加的一个安全层,用于保障HTTP的加密传输 本质&…...
STM32H750之FreeRTOS学习--------(一)初识RTOS
FreeRTOS 一、初识RTOS 裸机:裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序 实时性差,程序轮流执行delayCPU空等待,效率低程序混乱,臃肿,功能都放在while循环…...
关于pycharm中句号变成点的问题
现象 在pycharm的使用中,经常遇到一个问题:注释写着写着,突然句号“。”变成了“.” 原因 今天突然发现,造成该现象的原因是:某个瞬间按下了ctrl .,那么之后按下句号只能显示为点。 pycharm中…...
FedGNN: Federated Graph Neural Network for Privacy-Preserving Recommendation
FedGNN:用于隐私保护推荐的联邦图神经网络 参考笔记 ICML-21-workshop 本文的主要创新工作 在具有局部差分隐私的模型训练中保护模型梯度,并提出一种伪交互项目采样技术来保护用户与之交互的项目。提出了一种保护隐私的用户-项目图扩展方法࿰…...
k8s---pod进阶
//资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了 li…...
scrapy框架爬取数据(创建一个scrapy项目+xpath解析数据+通过pipelines管道实现数据保存+中间件)
目录 一、创建一个scrapy项目 二、xpath解析数据 三、通过pipelines管道实现数据保存 四、中间件 一、创建一个scrapy项目 1.创建一个文件夹:C06 在终端输入以下命令: 2.安装scrapy:pip install scrapy 3.来到文件夹下:cd C06 4.创建…...
你被骗了吗?别拿低价诱骗机器视觉小白,4000元机器视觉系统怎么来的?机器视觉工程师自己组装一个2000元不到,还带深度学习
淘宝闲鱼,大家搜搜铺价格,特别是机器视觉小白。 机架:(新的)200元以下。(看需求,自己简单打光,买个50元的。如果复杂,就拿给供应商免费打光) 相机,镜头:&am…...
计算机毕业设计选题推荐-大学生校园兼职微信小程序/安卓APP-项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
如何使用 Docker 搭建 Jenkins 环境?从安装到精通
不少兄弟搭 jenkins 环境有问题,有的同学用 window, 有的同学用 mac, 有的同学用 linux。 还有的同学公司用 window, 家里用 mac,搭个环境头发掉了一地。。。 这回我们用 docker 去搭建 jenkins 环境,不管你是用的是什么系统&…...
YOLOv5配置文件之 - yaml
在YOLOv5的目录中,models文件夹里存储了YOLO的模型配置。 ./models/yolov5.yaml 定义了YOLOv5s网络结构的定义文件 yaml的主要内容 参数配置 nc: 80 类别数量 depth_multiple: 0.33 模型深度缩放因子 width_multiple: 0.50 控制卷积特征图的通道个数 anchors配…...
HBuilderX实现安卓真机调试
1. 简介 HBuilderX 简称 HX,HBuilder,H 是 HTML 的缩写,Builder 是建设者。是为前端开发者服务的通用 IDE,或者称为编辑器。与 vscode、sublime、webstorm 类似。 它可以开发普通 web 项目,也可以开发 DCloud 出品的 u…...
如何使用IP归属地查询API加强网络安全
引言 在当今数字化时代,网络安全对于个人和组织来说至关重要。恶意网络活动的威胁不断增加,因此采取有效的措施来加强网络安全至关重要。其中之一是利用IP归属地查询API。这个工具可以为您的网络安全策略提供宝贵的信息,帮助您更好地保护自己…...
Nginx 实战指南:暴露出请求的真实 IP
🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…...
golang工程— grpc-gateway健康检查和跨域配置
grpc健康检查网关跨域配置 grpc健康检查 grpc健康检查使用 服务端配置 import ("google.golang.org/grpc/health""google.golang.org/grpc/health/grpc_health_v1" )//添加健康检查服务,多路复用 grpc_health_v1.RegisterHealthServer(s, health.NewSe…...
怎么样把握单片机的实际应用?说几句大实话
关注我们 你听说小米的大动作了吗? 没错,小米终于揭开了新操作系统的面纱。 小米澎湃OS暨小米14系列新品发布会于10月26日19:00举行,小米14手机系列、小米首款血压手表、小米Watch S3...... 今天主要讲的是自研7年的小米澎湃系统 没…...
PostgreSQL在云端:部署、管理和扩展你的数据库
随着云计算技术的迅猛发展,将数据库迁移到云端已经成为许多企业的首选。而在众多数据库管理系统中,PostgreSQL因其稳定性、灵活性和可扩展性而成为了不少企业的首选之一。 部署PostgreSQL在云端 将PostgreSQL部署在云端是一个相对简单的过程。云服务提供…...
Maven进阶系列-继承和聚合
Maven进阶系列-继承和聚合 文章目录 Maven进阶系列-继承和聚合1. 继承2. 继承的作用2.1 在父工程中配置依赖的统一管理2.2 在父工程中声明自定义属性2.3 父工程中必须要继承的配置 3. 聚合4. 聚合的作用 1. 继承 Maven工程之间存在继承关系,例如工程B继承工程A&…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
项目进度管理软件是什么?项目进度管理软件有哪些核心功能?
无论是建筑施工、软件开发,还是市场营销活动,项目往往涉及多个团队、大量资源和严格的时间表。如果没有一个系统化的工具来跟踪和管理这些元素,项目很容易陷入混乱,导致进度延误、成本超支,甚至失败。 项目进度管理软…...

