AirtestProject是什么

AirtestProject是由网易游戏推出的UI自动化测试解决方案,主要包含3部分内容:

1.Airtest框架:跨平台的,基于图像识别的UI自动化测试框架,支持平台有Windows、Android和iOS。

2.Poco框架:基于UI控件识别的自动化测试框架,目前支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台,也可以在其他引擎中自行接入poco-sdk来使用。

3.AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写Airtest和Poco代码。

关于AirtestProject的具体介绍,详见:AirtestProject官方文档

AirtestProject简单示例

所谓AirtestProject的应用实践,即使用AirtestIDE编写Airtest和Poco代码,实现对APP的自动化操作。

对于一个从未接触过AirtestProject的新人而言,要使用AirtestProject完成对指定APP的自动化操作,实现步骤如下:

第一步:到这里下载最新版的AirtestIDE,解压到指定位置,双击AirtestIDE.exe启动编辑器。

在启动过程中会提示用户注册账户并登录,直接点击Skip跳过即可。

第二步:连接手机到主机,并打开调试选项,此时将会在AirtestIDE的右侧“设备窗”面板中看到已经连接的设备信息,点击“connect”按钮后即可看到手机界面。



第三步:新建Airtest脚本,点击“文件->新建脚本->.air Airtest项目”,此时会弹出一个保存Airtest脚本的对话框,设置好文件名并选择指定目录,点击“保存”按钮。



第四步:开始编写Airtest自动化测试代码。实际上,借助于AirtestIDE编辑器可以直接在通过“Airtest辅助窗”面板中的按钮生成代码。

以打开“设置”APP为例,在“Airtest辅助窗”面板中点击“touch”图标,此时移动光标到右侧的“设备窗”面板中拖动鼠标选取“设置”APP图标,此时就会在脚本文件中自动生成一段代码。



第五步:运行脚本。在AirtestIDE编辑器中点击“运行->运行脚本”,此时从右侧设备窗面板中将看到“设置”APP被点击启动了。

至此,一个非常简单的Airtest脚本就完成了。在这个简单实例中仅仅只是打开了指定APP,并没有实现任何有价值的工作,但这已经足够说明如何编写Airtest代码并实现APP自动化的流程了。

AirtestProject深入实践

通过包名启动APP

启动APP除了可以通过Airtest的图标识别方式启动之外,还可以直接通过api方式指定APP包名启动,示例代码如下:

# -*- encoding=utf8 -*-
__author__ = "zhangsan" from airtest.core.api import * auto_setup(__file__) # 通过api指定包名启动APP
start_app("com.android.settings")

关于如果获取指定APP包名,网络上有很多教程,例如:使用adb 命令获取APP包名

引入其他Airtest模块

在一个正式的生产项目中,便于共用相同的逻辑,通常需要将一些公共的操作封装起来,Airtest支持引入外部的模块。

假设已经有一个封装了公共操作的Airtest模块,名称叫做“common.air”,其内容如下:

# -*- encoding=utf8 -*-
__author__ = "zhangsan" from airtest.core.api import *
auto_setup(__file__) #
# 启动APP
#
def start_app():
start_app("com.android.settings")
sleep(5.0)

在另外一个Airtest模块中可以引入该公共模块:

# -*- encoding=utf8 -*-

__author__ = "zhangsan"

from airtest.core.api import *

# 引入外部Airtest模块
using("common.air")
# 导入外部Airtest模块中的方法
from common import start_app # 导入外部Airtest模块中的方法之后可以直接调用
start_app()

使用Poco定位元素

在之前的简单示例中是通过图片识别的方式实现元素定位的,其实还可以直接使用Poco框架使用表达式直接对APP中的元素定位。

需要注意的是:如果需要使用Poco框架定位元素,需要在脚本中加入对应的初始化代码。

# -*- encoding=utf8 -*-
__author__ = "zhangsan" # 初始化Poco框架的代码
# 这段代码还可以在AirtestIDE编辑器左侧Poco辅助窗面板中选择对应设备类型自动生成
# 如下代码是选择Android设备自动生成的的代码
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

相比起使用Airtest定位元素,使用Poco框架定位元素比较精准,但是在查找元素的定位标识时相对麻烦和困难(可以通过Poco辅助窗中的“Poco Inspector”实现元素查找和定位)。

如下示例展示通过Poco框架定位并打开“设置”APP。

poco("android.widget.FrameLayout").offspring("设置,0条通知").click()

在实际项目中有如下经验:当使用Poco框架定位困难时,可以直接使用Airtest框架的图片识别方式进行定位。

总之,使用最方便的元素定位方式即可。

关于Airtest框架和Poco框架的详见:Airtest介绍Poco介绍

查看测试报告

AirtestProject项目是一个自动化测试解决方案,自然是需要有测试结果的报告说明的。在AirtestIDE编辑器中点击“运行->打开报告目录”即可在浏览器中查看对应的测试报告详情。

运行测试脚本

通常在开发环节时,直接在AirtestIDE编辑器中运行Airtest自动化测试脚本是非常方便和直接的。但是当开发完毕之后,是需要脱离IDE环境运行的。

有2种办法:

第一,根据AirtestIDE的运行脚本命令跑,如:

# 先使用adb连接设备,否则可能无法启动Airtest脚本
adb connect 127.0.0.1:5037
"D:\ProgramFiles\AirtestIDE-win-1.2.14\AirtestIDE\AirtestIDE" runner "D:\python\helloworld.air" --device android://127.0.0.1:5037/14a0332c?cap_method=MINICAP&&ori_method=MINICAPORI&&touch_method=MAXTOUCH --log "C:\Users\zhangsan\AppData\Local\Temp\AirtestIDE\scripts\807aacf1256a64b89f3f7b89ae805c43"

第二,部署本地Python环境跑。

# 安装Airtest框架
pip install airtest # 安装Poco框架;编写了Poco语句就需要安装
pip install pocoui # 安装airtest-selenium框架;编写了airtest-selenium语句就需要安装
pip install airtest-selenium # 运行自动化测试脚本
python -m airtest run "D:\python\helloworld.air" --device android://127.0.0.1:5037/127.0.0.1:7555 --log "C:\Users\zhangsan\AppData\Local\Temp\AirtestIDE\scripts\807aacf1256a64b89f3f7b89ae805c43"

详见:如何脱离AirtestIDE跑自动化脚本

【参考】

https://www.jianshu.com/p/3e3ad243f956 Airtest引用其他的.air脚本

https://blog.csdn.net/Py_csdn_/article/details/109023773 【AirTest】引用别的.air脚本中封装好的方法的几种方式

https://blog.csdn.net/laoxi_liu/article/details/104628765 Airtest 常用函数(持续更新)

https://blog.csdn.net/qq_42293487/article/details/102929123 airtest常用按键

https://www.cnblogs.com/songzhenhua/p/15612620.html Airtest API精讲之wait(),exists()

https://blog.csdn.net/George513/article/details/101058574 Airtest-Poco元素定位剖析

https://blog.csdn.net/AirtestProject/article/details/105836667 poco的元素定位搞不定?速来看看这3个选择器

https://blog.csdn.net/qq_48946910/article/details/108640705 airtest有很多同名节点时快速定位到的一个方法

https://blog.csdn.net/AirtestProject/article/details/125999073 Airtest脚本的点击位置与点击偏移

https://cuiqingcai.com/9529.html Airtest 和 Poco 的 API 总结

https://www.cnblogs.com/songzhenhua/p/15970453.html Poco元素定位和脚本编写顺序

https://juejin.cn/post/7028783863102963720 一文打包Airtest干货教程-2021篇

AirtestProject浅尝辄止的更多相关文章

  1. 浅尝辄止——在C++中调用C#的回调函数——COM方式

    这种方式比较简单,给大家分享一下,同时讲一下SafeArray内定义结构体的方法 1. 需求描述 需求是这样的,C++代码和C#代码相互通信(C++一般做服务,C#做客户端),C++一侧准备好数据,然 ...

  2. 浅尝辄止——使用ActiveX装载WPF控件

    1 引言 使用VC编写的容器类编辑器,很多都可以挂接ActiveX控件,因为基于COM的ActiveX控件不仅封装性不错,还可以显示一些不错的界面图元. 但是随着技术不断的进步,已被抛弃的Active ...

  3. WPF简单布局 浅尝辄止

            WPF的窗口只能包含一个元素,为了在WPF窗口中放置多个元素并创建更实用的用户界面,需要在窗口上放置一个容器,然后在容器中放置其它元素. 注意:造成这一限制的原因是window类继承自 ...

  4. 浅尝辄止WPF自定义用户控件(实现颜色调制器)

    主要利用用户控件实现一个自定义的颜色调制控件,实现一个小小的功能,具体实现界面如下. 首先自己新建一个wpf的用户控件类,我就放在我的wpf项目的一个文件夹下面,因为是一个很小的东西,所以就没有用mv ...

  5. JSON必知必会,浅尝辄止的整理

    在使用JSON时常见的安全漏洞通常发生在JavaScript从服务器获取到一段JSON字符串并将其转化为JavaScript对象时, 在定位JSON安全问题时,应该记住三件事情: 1.不要使用顶级数组 ...

  6. DM浅尝辄止

    都是大佬的笔记啊啊啊啊 dialog management 对话状态维护(dialog state tracking, DST) 生成系统决策(dialog policy) 系统行为(dialog a ...

  7. 浅尝辄止之MongoDB

    1 简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储 解决方案.MongoDB将数据存储为一个文档,数据结构由键 ...

  8. SQL注入的浅尝辄止

    简单的说,SQL注入就是通过在前端页面输入SQL语句,导致系统暴露异常信息在前端页面显示,非法者通过这些异常信息获取数据库的相干信息,为攻击系统做准备.

  9. Metatable In Lua 浅尝辄止

    http://www.cnblogs.com/simonw/archive/2007/01/17/622032.html 什么是Metatable Lua中Metatable这个概念, 国内将他翻译为 ...

  10. 【狼窝乀野狼】Parallel浅尝辄止

    前段时间看到园子里面有同学在用Parallel进行批量插入数据库.后面也有很多同学针对这一事件给出了自己的看法和见解.我在这里不评论内容的好坏,至少能将自己东西总结分享这个是要靠勇气和毅力. 闲话少说 ...

随机推荐

  1. [转帖]zookeeper三节点集群搭建

    https://www.jianshu.com/p/1dcfbf45383b 下载zookeeper Apache源 http://archive.apache.org/dist/zookeeper/ ...

  2. [转帖]Linux—编写shell脚本操作数据库执行sql

    Linux-编写shell脚本操作数据库执行sql Hughman关注IP属地: 北京 0.0762020.03.20 09:02:13字数 295阅读 1,036 修改数据库数据   在升级应用时, ...

  3. Nginx与Tomcat作为前端服务器的性能比较

    Nginx与Tomcat作为前端服务器的性能比较 摘要 最近总遇到使用tomcat还是使用nginx进行前端文件访问的争论 想着出差周末在酒店, 可以自己进行一下简单的测试. 希望能够对未来的工作进行 ...

  4. 服务器Raid配置的一些思考

    背景 随着公司软件的发展.客户越来越多. 测试环境和兼容环境也越来越多. 不管是虚拟化,还是裸金属做数据库 存储都是绕不开的一道门槛. 最近又上架了几台服务器, 所以想趁着周末总结一下 最近服务器上架 ...

  5. Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学

    Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏.实物.人物.风景.动漫.邮票.海报等生成,终极模板教学 场景6:游戏 Prompt 真的越长越好吗? 按照 Mi ...

  6. 强烈推荐:数据标注平台doccano----简介、安装、使用、踩坑记录

    1.doccano的安装与初始配置 1.1 doccano的用途 document classification 文本分类 sequence labeling 序列标注,用于命名实体识别 sequen ...

  7. 【一】tensorflow【cpu/gpu、cuda、cudnn】全网最详细安装、常用python镜像源、tensorflow 深度学习强化学习教学

    相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...

  8. 8.5 CheckRemoteDebuggerPresent

    CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用.函数接收两个参数进程句柄和一个指向布尔值的指针.如果指定的进程正在被调试,则函数 ...

  9. 遥感图像处理笔记之【Land use/Land cover classification with Deep Learning】

    遥感图像处理学习(1) 前言 遥感图像处理方向的学习者可以参考或者复刻 本文初编辑于2023年12月14日CSDN平台 2024年1月24日搬运至本人博客园平台 文章标题:Land use/Land ...

  10. Linux虚拟机追加扩展磁盘

    一.使用VMware给虚拟机追加磁盘 使用VMware打开虚拟机设置对话框,选择硬盘,点击右侧的扩展按钮,输入扩展后的磁盘容量. 点击扩展按钮.提示磁盘已成功扩展. 二.对闲置的空间进行分区 上面扩展 ...