【AirTest】从入门到精通-程序员宅基地

技术标签: 测试  android  

【大家好,我是爱干饭的猿,本文重点介绍AirTest简介、作用、AirTest搭建方式(安卓/模拟器环境)、Airtest与模拟器进行连接、图像识别框架、AirTest 断言和iOS端连接。

后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞,关注一下吧】

上一篇文章:《【Redis7】Spring Boot集成Redis(重点:集成RedisTemplate)》


目录

1. AirTest简介

2. 作用

3. AirTest搭建方式(安卓/模拟器环境)

4. Airtest与模拟器进行连接

5. 图像识别框架

5.1 Touch方法应用

5.2 wait方法

5.3 swipe方法-基本使用

5.4 text方法

5.5 keyevent方法

5.6 snapshot方法

5.7 sleep方法

6. AirTest 断言

6.1 assert_exists方法

6.2 assert_not_exists方法

6.3 assert_equal方法

6.4 assert_not_equal方法

7. iOS 

7.1 AirTest搭建方式(iOS)

 7.2 连接真机


1. AirTest简介

Airtest由网易团队出品,是一个基于图像识别原理的跨平台UI自动化测试框架,适用于安卓应用测试、游戏测试、web应用测试、ios应用、windows应用。

特点∶

  • 跨平台:Airtest几乎可以在所有平台上执行游戏和App的自动化
  • 易操作∶使用图像识别技术来定位UI元素,无需嵌入任何代码即可对游戏和应用进行自动化
  • 可扩展性:通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本
  • GUI工具:AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本
     

2. 作用

特点∶

  • Game :借助图像识别和UI层次结构,支持所有游戏引擎和应用,多平台,使用方便
  • Android : Android源生应用测试的测试过程中,Airtest可以发挥至关重要的作用,即插即用
  • winodws :支持Windows应用,一次编写,跨平台运行
  • iOS : Airtest支持对iOS进行方便快捷的测试,可以通过Poco来快捷获取iOS设备页面中的原生元素的位置和信息。
  • Web:基于Chrome Devtools Protocol协议,自动录制生成selenium脚本,精确定位与操作界面元素

AirTest有Poco、图像识别、selenium三个大类库

3. AirTest搭建方式(安卓/模拟器环境)

  • python:
    • 命令: pip install -U airtest
    • 说明︰安装python的AirTest库,通过python代码直接调用AirTest库的Api方法
  • Gui工具:
    • 工具: AirTestIDE
    • 说明:AirTestIDE工具自带python环境,无需单独安装。
    • 提示:使用工具可以录制操作,也可以手动编写调用api

下载地址:Airtest Project

4. Airtest与模拟器/安卓设备进行连接

  1. 打开开发者模式(设置->关于手机->版本号->多次点击->开启开发者模式)
  2. 打开usb调试模式
  3. 连接兼容模式
  4. 设置修改设备地址及端口号

注意:

  • AirTest连接设备需要开启开发者模式及usb调试模式
  • 远程连接可以修改不同设备端口号
  • 勾选Use Javacap及Use ADB orientation可解决连接黑屏问题

常用模拟器及其端口如下:

5. 图像识别框架

5.1 Touch方法应用

1. 步骤一:新建脚本类型选择︰

  • .air  AirTest项目∶生成一个项目名称.air目录,目录下有一个项目名.py文件
  • .py  纯Python (高级用户)︰生成一个项目名.py文件

区别:

  • 相同点︰都是python文件
  • 不同点:脚本文件初始化代码不同,一个采用默认值无法看到,一个可以看到默认值,进行修改

提示∶

  • AirTest框架自带python解释器及标准库,无需单独安装python环境

2. 步骤二:使用Touch触摸应用:

  • 点击Touch
  • 拉选应用图标

3. 步骤三运行脚本

  • 运行脚本
  • 运行单行代码

4. 步骤四查看报告

  • 快捷键Ctil+L

5.2 wait方法

  • 作用∶等待某个元素出现,如果出现返回元素的中心点坐标,否则抛出TargetNotFoundError异常·常用参数∶
    • v:图片
    • timeout:等待超时,默认找20s
    • interval:每次匹配的时间间隔
  • 需求(基本使用):
    • 启动app应用
    • 菜单(我)出现就进行触摸点击操作
  • 优化:touch(wait(图片))
  • 扩展:wait(图片, interval=0.5, timeout=5)

5.3 swipe方法-基本使用

  • 作用∶滑动-从屏幕的一个位置滑动到屏幕另一个位置(类似于手指在屏幕进行的滑动)
  • 常用参数∶
    • v1:图片或者坐标(xy)
    • v2:图片或者坐标(x,y),从v1滑到v2
    • vector:[xy]录制时自动生成,记录了屏幕中的滑动比例,向右为X轴正向,向下为Y轴正向
    • duration:滑动操作持续时长,默认为0.5秒
  • 使用:
    • swipe(图片, 鼠标点击)
    • swipe(图片, 图片)
    • swipe((1000, 1500), (1000, 1500))

5.4 text方法

  • 作用:输入文本操作
  • 常用参数:
    • text:要输入的文本(注︰输入的位置为当前页面默认焦点元素一般配合touch一起使用. enter:完整输入后自动执行Enter操作,默认为True)

5.5 keyevent方法

  • 作用:模拟键盘按键输入,支持键码如:3为home键
  • 常用参数︰
    • keyname:固定键名或键码(https://www.cnblogs.com/findyou/p/5614178.html)
       

5.6 snapshot方法

  • 作用︰截取当前屏幕图片,可以在测试报告显示。
  • 常用参数:
    • ★Filename:保存截屏为指定文件
    • msg:描述测试点,可以在HTML报告中呈现

5.7 sleep方法

  • 作用:暂停时间
  • 常用参数:
    • secs:延迟时间(s),默认1.0s

6. AirTest 断言

6.1 assert_exists方法

  • 作用:断言(判断)页面存在元素
  • 常用参数:
    • v:图片(要判断页面是否存在元素).
    • msg:描述测试点
    • return:找到图片则返回图片中心点坐标,否则将raise AssertionError

6.2 assert_not_exists方法

  • 作用:断言(判断)页面不存在元素
  • 常用参数:
    • v:图片(注:判断当前页面不存在图片元素,不存在通过,存在失败).
    • msg:描述测试点(测试报告中显示)

6.3 assert_equal方法

  • 作用:判断第一个值与第二个值相等
  • 常用参数︰
    • first:第一个值
    • second:第二个值
    • msg:描述此断言语句对应的测试点内容

6.4 assert_not_equal方法

  • 作用:判断第一个条目与第二个条目不相等
  • 常用参数︰
    • first:第一个值.
    • second:第二个值
    • msg:描述此断言语句对应的测试点内容

7. iOS 

7.1 AirTest搭建方式(iOS)

  • 硬件:
    • 一台苹果电脑(运行xcode )
    • 一部iphone手机 ( app应用运行宿主机)
  • 软件∶
    • iOS-Tagent ( WebDriver服务器)
      • 作用︰在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元
      • 下载:https://github.com/facebookarchive/WebDriverAgent
      • 运行依赖:xcode
    • xcode ( ios集成开发工具,运行IOS-Tagent )
      • 作用: ios开发集成工具,在这理主要作用为运行WebDriverAgen文件到手机
      • 下载:AppSotre->平台搜索xcode
      • 运行依赖∶开发者账号
      • 操作:
        • 添加开发者账号(普通的apple ID即可)
        • 配置WebDriverAgent ( Team、Product Bundle Identifiier )测试运行
        • WebDriverAgentRunner到手机
        • 如果启动失败:
          • 在xcode中点击Test后,第一次将WebdriverRunner时,手机需要信任该项目(设置->通用-设备管理)
          • 在手机中启用UI自动化(设置->开发者->Enable UI Automation )
          • 如果有其他异常,根据异常提示信息自行参考百度或访问
            https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md查阅相关解决方案
    • iproxy(代理工具)
      • 作用︰设置代理-将iPhone端口映射到电脑端口,通过访问电脑的端口访问到手机的端口了
      • 下载: brew install libimobiledevice
      • 运行:iproxy 81008100
      • 验证:
        • 查看:打开浏览器输入http://127.0.0.1:8100/status 出现json格式连接信息
        • 抓屏:http://127.0.0.1:8100/inspector
           
    • AirtestIDE工具(图像识别自动化测试工具)
      • 作用∶编写自动化代码工具
      • 下载: http://airtest.netease.com/changelog.html

 7.2 连接真机

  1. 将真机使用数据线连接电脑
  2. 启动xcode并打开配置好的iOS-Tagent项日(菜单->Product->Test启动自动化服务程序)
  3. 打开终端运行:iproxy 8100 8100(启动端口映射服务程序)
  4. 启动AirTestIDE工具(连接ios设备-> connect按钮) 

注意事项:

  1. 在xcode中点击Test前,检查项目默认终端是否选择真机设备
  2. 点击在xcode中Test之后,要查看控制信息,如果控制台没任何信息输出,可以等待或者多Test几次,直到控制台输出启动相关信息
  3. xcode配置iOS-Tagent只需第一次配置,之后使用无需在单独配置,切莫乱修改参数
  4. 真机设备中,要开启自动化测试和信任iOS-Tagent项目

reids初级篇分享到此,感谢大家观看!!!

如果你喜欢这篇文章,请点赞关注吧,或者如果你对文章有什么困惑,可以私信我。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_62218217/article/details/130410523

智能推荐

北理工远程教育在线作业统考计算机,北京理工大学计算机统考网上作业答案-程序员宅基地

文章浏览阅读876次。在 Word 文档中插入数学公式, 在"插入"菜单中应选的命令是 ( ) 。单选 题 单选 题10.044在 Excel 2003中,能够进行条件格式设置的区域( ) 。10.011√PowerPoint 中,在幻灯片中添加"动作按钮" 的作用是( ) 。单选 题10.0 22√HTTP 协议是( ) 。单选 题10.044√万维网(world wide web)又称为( ) ,是 Interne..._北理工网络信息安全基础在线作业答案

PY32F003F18之RTC_py32 rtc-程序员宅基地

文章浏览阅读482次。PY32F003F18实时时钟的振荡器是内部RC振荡器,频率为32.768KHz。每10分钟误差6秒。_py32 rtc

括号匹配-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏35次。题目给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]" 输出: false..._括号匹配

基于Java自习室预订座位管理系统设计实现(源码+lw+部署文档+讲解等)_java座位预约系统-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏6次。使用旧方法对自习室预订座位管理信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在自习室预订座位管理信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的自习室预订座位管理系统管理员,学生。管理员功能有个人中心,学生管理,座位分类管理,座位信息管理,座位预约管理,暂离信息管理,签到信息管理,退座信息管理。学生功能有个人中心,座位信息管理,座位预约管理,暂离信息管理,签到信息管理,推座信息管理。_java座位预约系统

设置n卡显示_英伟达牛皮!新驱动开放给显示器的G-Sync 本人亲测有效!-程序员宅基地

文章浏览阅读2.1k次。【PConline DIY老司机】在1月15日的时候,英伟达终于发布了这个让广大电竞玩家盼长了脖子的功能:G-Sync Compatible,就是可以让一些非原生G-Sync的显示器用上G-Sync,这个功能对显示器行业来说可以说是具有里程碑式意义的。但想要用上这个喜闻乐见的G-Sync Compatible功能,硬件和软件方面都是有些条件要求的,想给自家显示器开G-Sync的朋友,这些预习功课要..._用n卡能不能用adaptivesync显示器技术

单片机毕业设计:基于stm32的物联网电子秤-程序员宅基地

文章浏览阅读180次。单片机毕业设计:基于STM32的物联网电子秤。

随便推点

微信机器人ipad_pad版微信 机器人-程序员宅基地

文章浏览阅读1.1k次。首先我们要先了解下ipad协议是什么 ,ipad协议又叫微信协议 是基于微信IPad协议的智能控制系统帮助企业快速连接客户,创造营销氛围,实现自动获客、自动传播、自动转化、智能营销等分布式营销服务。通过API 实现 个性化微信功能 (例:营销系统、云发单助手、社群小助手、客服系统、机器人等),微信个人号二次开发,基于API开发可以有很多功能模块用来自动管理微信消息。可开发的功能包括但不限于:好友管理:添加好友、删除好友、修改备注、创建标签、获取好友列表、搜索好友信息消息管理:发文本、图片消息、名片消_pad版微信 机器人

软件管家出错的情况下安装keil5_可以从联想软件管家下载keil吗-程序员宅基地

文章浏览阅读579次。软件管家出错的情况下安装keil51.按照管家的步骤出错了新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入1...._可以从联想软件管家下载keil吗

C++实现first集follow集_first follow集的求法c++-程序员宅基地

文章浏览阅读4k次,点赞3次,收藏25次。1.“@”代替字符“ε”2.同一非终结符如有多条产生式必须写成一行,中间用“|”分隔,不允许有空格代码存在很多问题,大量“非正常”情况都未考虑,谨慎参考#include<iostream>#include<vector>#include<string>#include<fstream>using namespace std;str..._first follow集的求法c++

基于STM32CubeMX+STM32F103C6Tx+LCD1602+BMP180的压力温度采集Proteus仿真-程序员宅基地

文章浏览阅读287次。基于STM32CubeMX+STM32F103C6Tx+LCD1602+BMP180的压力温度采集Proteus仿真

Android实战 - 音心播放器(MusicActivity - 歌词实现)_android实现音乐歌词播放器动画-程序员宅基地

文章浏览阅读1.8k次。1.背景 歌词是音乐软件必备的,没有它的存在就感觉少点什么,故实现了歌曲歌词的显示,使用LrcView实现,当然是在GitHub上找到的,是一个自定义View : LrcView 地址 : https://github.com/ChanWong21/LrcView 效果预览 : _android实现音乐歌词播放器动画

Cisco路由器enable特权模式密码重置_思科模拟器更改enable密码不会变是怎么回事-程序员宅基地

文章浏览阅读1.3k次。以cisco packet tracer 模拟器来模拟重置路由器的密码,packet tracer默认路由器端口是关闭的,需要手动启用1、把路由器关机并重启!看到###后立即按下【Ctrl+c】键中断路由器的启动过程,进入 rommon 模式!2、输入命令改变配置寄存器的值为 0x2142,这会使得路由器开机时不读取 NVRAM 中的配置文件 。然后重新启动路由器!3、路由器重启后会直接进入到 s..._思科模拟器更改enable密码不会变是怎么回事