python Airtest自动化测试工具的的使用

Airtest全称AirtestProject,是由网易游戏推出的一款自动化测试框架,在软件测试的时候使用到了该框架。这里记录一下安装、使用和遇到的坑的问题…

Airtest的官网介绍项目构成

Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS
Poco:是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用
源码
AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写Airtest和Poco代码。
AirLab:真机自动化云测试平台,目前提供了TOP100手机兼容性测试、海外云真机兼容性测试等服务,请访问官网以了解更多

如何上手?

项目基于Python,因此写出来的所有脚本都是Python代码,建议在使用前,先学习Python的基础语法知识。
在编写自动化脚本时,可以配合官方提供的AirtestIDE编辑器,能够快速编写脚本。
自动化脚本,以及Airtest和Poco,都是基于Python的,因此也可以使用自己喜欢的Python编辑器来编写脚本

一、安装

    Airtest有两种安装方式,一种是下载安装AirtestIDE,该IDE自带一个python环境和Airtest库。支持可视化选取组件测试。缺点就是你自己安装的Python环境和第三方模块无法在这IDE中使用,只能重新安装相关模块。

    在使用中先是安装了AirtestIDE,在官网很快就可以下载安装使用。打开IDE,左边是Airtest辅助窗口和Poco辅助窗口,Airtest辅助窗口可以快速完成截图识别图片加点击、滑动等操作代码的生成。而Poco辅助窗口可以查看应用控件树,快速生成与应用控件操作的相关代码。中间则是代码编辑框和Log窗体,用于编辑代码和查看输出结果等信息。右边是设备窗口,可以进行连接设置和设备选定,当选定设备后,右边的设备窗口将会变为被选定设备的当前UI界面。IDE界面如下图所示。

在这里插入图片描述

二、使用

   可以从官网的介绍了解到Airtest采用了图形脚本语言Sikuli的思路,使用者不需要一行行的编写测试的代码,而是用截图的方式生成相关的操作代码(当然熟悉相关Api的也可以用手写代码方式)。下图所示为通过截图实现的小Demo。

   官方文档: 欢迎使用 - Airtest Project Docs

在这里插入图片描述

三、在本地环境中使用及遇到的问题

1.使用"pip install airtest" 进行安装

   项目支持Python(2.7或<=3.6)的运行环境,官方更推荐使用 Python3。在实践过程中, 起初没有在意这个python版本的问题,仍坚持使用了python3.8环境进行安装,但是python3.8及以上版本是不能正常安装。安装时会报如下错误:

ERROR: Could not find a version that satisfies the requirement opencv-contrib-python<=3.4.2.17 (from airtest) (from versions: 3.4.8.29, 3.4.9.31, 3.4.9.33, 4.1.2.30, 4.2.0.32, 4.2.0.34)
ERROR: No matching distribution found for opencv-contrib-python<=3.4.2.17 (from airtest)

   因为Airtest依赖的opencv-python的版本要小于3.4.2.17,而python3.8只能安装版本大于3.4.2.17的opencv-python库,即使你下载了opencv-python 3.4.2.17版本以上的whl文件进行本地安装也是行不通的,安装的时候python3.8的环境下会报error提示不支持安装此版本的opencv。
   解决方法:可以安装两个版本python,使用时进行切换环境;或者降低python版本;或者直接使用AirtestIDE…

2.IDE连接不存在设备或被占用设备容易假死

   在进行远程连接时,如果尝试连接一个不存在的设备,或者已经被占用的设备,会造成IDE几秒假死;

在这里插入图片描述

3. 假死期间关闭IDE会造成adb驻留

   在IDE假死期间关闭IDE,则adb有可能不会正常退出造成驻留,造成再开一次IDE又会唤起一个新的adb进程。这个情况是偶发性的,有时候能在假死的时候复现出,有时候不能。

在这里插入图片描述

4.尝试连接不存在设备时,即使设备是不存在的也会加入列表

   当尝试连接不存在设备时,即使设备是不存在的也会加入列表,状态显示的是offline。通常来说,通过 adb devices命令应该可以查看到连接的设备,不知道这样显示是不是有别的用意。除此之外,模拟器是需要进行adb connect才能在IDE中进行操作的。因此,还遇到了有时候进行连接时,会出现即使设备在线(已经确定端口没被占用),也是显示offline。

在这里插入图片描述

四、最后啰嗦几句

   AirtestProject作为近几年开发的移动自动化测试框架来说,其特点可谓鲜明。其一,支持跨平台;其二,对于原生应用、Hybird应用、Web应用都有很好的支持度,还支持移动游戏测试。其三,采取图形脚本语言Sikuli的思路,通过相应的IDE可以选取动作加截图实现代码的编写。同时项目在Github上开源,Issue有较好的活跃度。

   在实际使用过程中,健全的开发者文档帮助解决了很多问题。虽然内容后面描述了很多IDE的BUG, 并不意味着AirtestProject不是一个好的自动化测试框架。毕竟IDE只是一个编辑器,不代表项目本身。相反,Airtest的各种特性让其表现出色。使用AirtestIDE让人快速上手开发的特点也不会因为这些BUG表现很糟糕。在使用时可以通过一些操作避免BUG发生,比如连接时不要频繁点击,假死关闭时把相应的进程也给清除,连接不上可以重新启动模拟器或者查看相应端口是否被占用等。总而言之,我相信AirtestIDE在之后会进行更多的优化…

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/410853.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9尝鲜测试五分钟极简配置

pip安装python包&#xff1a; pip install yolov9pip在https://github.com/WongKinYiu/yolov9/tree/main中下载好权重文件yolov9-c.pt。 运行下面代码&#xff1a; import yolov9model yolov9.load("yolov9-c.pt", device"cpu") # load pretrained or c…

观察者模式与发布订阅模式

观察者模式 定义&#xff1a; 观察者模式是一种行为型设计模式&#xff0c;定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 结构图&#xff1a; ES6简易代码实现&#xff1a; //ts环境下…

Uncertainty-Aware Mean Teacher(UA-MT)

Uncertainty-Aware Mean Teacher 0 FQA:1 UA-MT1.1 Introduction:1.2 semi-supervised segmentation1.3 Uncertainty-Aware Mean Teacher Framework 参考&#xff1a; 0 FQA: Q1: 不确定感知是什么意思&#xff1f;不确定信息是啥&#xff1f;Q2&#xff1a;这篇文章的精妙的点…

300分钟吃透分布式缓存-14讲:大数据时代,MC如何应对新的常见问题?

大数据时代 Memcached 经典问题 随着互联网的快速发展和普及&#xff0c;人类进入了大数据时代。在大数据时代&#xff0c;移动设备全面融入了人们的工作和生活&#xff0c;各种数据以前所未有的 速度被生产、挖掘和消费。移动互联网系统也不断演进和发展&#xff0c;存储、计…

掌握“这招”,平趴也能轻松捕获威胁情报!——利用流行度排名升级威胁情报收集

引言 威胁情报是提供强大网络安全服务的重要基石&#xff0c;这些服务可以保护各地的移动设备和互联网用户。但当今的互联网威胁是复杂且具有强适应性的&#xff0c;它们通过不断改变其面貌以逃避安全防御。这使得提供涵盖各种威胁形势的威胁情报变得日益困难&#xff0c;组织…

工具篇-- 定时任务xxl-job

文章目录 前言一、xxl-job 运行&#xff1a;1.1 下载并且启动&#xff1a;1.2 项目介绍&#xff1a;1.2.1 xxl-job-admin&#xff1a;1.2.1.1 xxl-job-admin 作用&#xff1a;1.2.1.2 xxl-job-admin 的配置&#xff1a; 1.2.2 xxl-job-executor-samples&#xff1a;1.2.2.1 pom…

51.仿简道云公式函数实战-文本函数-JOIN

1. JOIN函数 JOIN 函数可通过连接符将数组的值连成文本。 2. 函数用法 JOIN(数组,"连接符") 3. 函数示例 如需将复选框中勾选的选项通过”-“组合在一起&#xff0c;则可设置公式为JOIN(复选框组,"-") 4. 代码实战 首先我们在function包下创建text包…

基于springboot的新闻资讯系统的设计与实现

**&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;**一 、设计说明 1.1 课题背景…

Qt QWidget 简约美观的加载动画 第四季

&#x1f60a; 第四季来啦 &#x1f60a; 效果如下: 只有三个文件,可以直接编译运行的 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QVBoxLayout> #include <QGridLayout> int main(int argc, char *argv[]) …

亚洲唯一!京东荣获2024年度Gartner供应链技术创新奖背后的创新探索

序言&#xff1a; 序言&#xff1a;2月14日晚间&#xff0c;Gartner公布了2024年度Garter Power of the Profession供应链大奖&#xff0c;京东集团荣获供应链技术创新奖&#xff0c;成为获得该奖项的唯一亚洲企业。Gartner Power of the Profession供应链奖项已经举办十年&am…

驻场人员严重划水,愈演愈烈,要请领导出面吗?

你有没有遇到过团队成员偷懒的情况&#xff1f;比如你们一起完成某个项目目标&#xff0c;干着干着你发现&#xff0c;就只有你和几个核心人员比较上心&#xff0c;很多人都在划水。 你可能会觉得这是因为大家工作态度不好&#xff0c;甚至怀疑他们的人品&#xff0c;忍不住想…

MoonBit支持云原生调试功能

MoonBit 更新 1. 支持云原生调试功能 现在&#xff0c;你可以通过访问try.moonbitlang.cn&#xff0c;直接在浏览器中使用 devtools 调试 MoonBit 程序&#xff0c;无需安装任何软件。具体的使用步骤如下&#xff1a; 2. MoonBit 支持使用 for 关键字定义的函数式循环控制流 …

ShardingJDBC分库分表

目录 ShardingSphere ShardingJDBC客户端分库分表 ShardingProxy服务端分库分表 两者对比 ShardingJDBC分库分表实战 需求 步骤 分片策略汇总 ShardingSphere ShardingSphere最为核心的产品有两个&#xff1a;一个是ShardingJDBC&#xff0c;这是一个进行客户端分库分表…

Linux命令行常用命令

初识shell shell是系统的用户界面&#xff0c;提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上shell是一个命令解释器&#xff0c;它解释用户输入的命令并且把用户的意图传达给内核。&#xff08;可以理解为用户与内核之间的翻译官…

npm/nodejs安装、切换源

前言 发现自己电脑上没有npm也没有node很震惊&#xff0c;难道我没写过代码么&#xff1f;不扯了&#xff0c;进入正题哈哈…… 安装 一般没有npm的话会报错&#xff1a; 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称而且报这个错&#xff0c;我们执行…

Order By Limit不稳定性

文章目录 前置解决不确定性场景1 Order By索引1.1 背景1.2 不确定性产生原因1.2.1 正常情况下1.2.2 但是 1.3 补充1.4 场景1总结 场景2 Order by id2.1 背景2.2 不会产生不确定性原因1原因2 2.3 推荐使用方式 场景3 filesort3.1 背景3.2 不确定性产生原因3.3 内存排序和磁盘临时…

内衣洗衣机哪个牌子好用?甄选安利四款优质好用的内衣洗衣机

内衣洗衣机是近几年新兴的一种家用电器产品&#xff0c;正日益引起人们的重视。但是&#xff0c;面对市面上品牌繁多、款式繁多的内衣洗衣机&#xff0c;使得很多人都不知道该如何选择。身为一个数码家电博主&#xff0c;我知道这类产品在挑选方面有着比较深入的了解。为此&…

数据结构2月25日

第一道&#xff1a; 第二道&#xff1a; 1、插入到prev和next中间 1.new(struct list_head*)malloc(sizeof(struct list_head*)); if(newNULL) { printf("失败\n"); return; } new->nextprev->next; prev->nextnew; return; 2、删除prve和next…

redis——客户端

Redis是一个典型一对多服务器程序&#xff0c;一个服务器可以与多个客户端进行网络连接&#xff0c;每隔客户端可以向服务器发送命令请求&#xff0c;而服务器则接收并处理客户端发送的命令请求&#xff0c;并向客户端返回命令请求。 通过是一个I/O多路复用技术实现的文件事件处…

3分钟快速实现串口PLC远程下载程序操作说明

3分钟快速实现串口PLC远程下载程序操作说明 搜索蓝蜂物联网官网&#xff0c;即可免费领取样机使用&#xff01;&#xff01;先到先得&#xff01;&#xff01;&#xff01; 一. 适用产品型号 其余型号网关此功能正在开发中&#xff0c;敬请期待。 二. 远程下载功能使用流程 …