如何使用Airtest进行UI自动化测试

一、环境搭建

1、Airtest客户端下载

访问官网http://airtest.netease.com/,根据自己的系统下载相应的客户端安装;

2、python工具下载与环境搭建

在本地python环境中安装airtest和pocoui,然后用命令行运行脚本;

1、建议使用3.7以下 版本,下载python3;

2、下载python后,配置本地的运行环境,详见:http://airtest.netease.com/docs/cn/4_run_script/run_script.html#id4

1)使用 pip 安装Airtest框架 pip install airtest

2)若运行代码时,在cv2模块报 ImportError: DLL load failed: 找不到指定模块 的错,如果使用的python版本低于3.7,请直接运行:

pip uninstall opencv-contrib-python
# 若以下安装语句运行失败,可以尝试更新pip到最新版本后重试
pip install opencv-contrib-python==3.2.0.7

3)Poco安装

使用 pip 安装poco框架 pip install pocoui,请注意库的名称为 pocoui,不要填错。

3、在Airtest中集成python环境

在Airtest中集成python环境的话,需要安装python之后,再填写python的路径到AirtestIDE中;可以参考:http://airtest.netease.com/docs/cn/4_run_script/run_script.html#airtestidepython 进行集成;

二、Airtest使用

1、使用方法

具体请参考官方文档:http://airtest.netease.com/docs/cn/,请优先看快速5分钟使用教程:http://airtest.netease.com/tutorial/Tutorial.html

2、在Airtest IDE中连接手机

在Air test中连接手机请查看连接:http://airtest.netease.com/docs/cn/2_device_connection/1_android_phone_connection.html#androidusb

手机连上Airtest之后,会向手机中咱装3个app,如下:

pocoservice是支撑poco操作的app,yosemite是airtest的输入法,安装之后,手机的默认输入法会变成这个输入法,如果需要改回来原来的输入法,需要手动到手机设置里面进行修改;

3、在代码中连接手机

如果是在 .py 脚本文件中 import airtest/poco ,希望以普通python脚本的方式来运行的话,可以在脚本代码中使用 connect_device 接口:

1 from airtest.core.api import *
2 connect_device("Android:///")  # 传入的是设备字符串

4.多个手机交互

如果case中涉及到两个手机交互的,可以在.py文件中连接多个手机,需要在哪个手机上操作,就需要在脚本中使用set_cerrent()借口来切换到相应的手机上;

1 device1 = "c17a4cb4" #设备1
2 device2 = "RKK0217C15003363" #设备2
3 dev1 = connect_device("android://127.0.0.1:5037/"+device1)#连接设备1
4 dev2 = connect_device("android://127.0.0.1:5037/"+device2)#连接设备2
5 poco1 = AndroidUiautomationPoco(dev1) #初始化设备1
6 poco2 = AndroidUiautomationPoco(dev2) #初始化设备2
7 set_current(device1)#切换到手机1
8 set_current(device2)切换到手机2

5.case举例

初始化设备之后就可以进行相关设备的poco操作了,举个例子:

这个例子是打开微信,点击聊天信息中的一个好友,然后清除好友聊天的例子;

 1 from poco.drivers.android.uiautomation import AndroidUiautomationPoco2 device1 = "c17a4cb4" #设备号3 dev1 = connect_device("android://127.0.0.1:5037/"+device1)#连接师傅手机4 poco1 = AndroidUiautomationPoco(dev1) #实例化手机5 auto_setup(__file__)6  7  8 def clear_wechat(poco):#清除微信的聊天记录9     start_app("com.tencent.mm")#启动微信
10     sleep(12)#等待12秒
11     poco1(text="三星").click()#点击好友“三星”的聊天
12     poco1("android.support.v7.widget.LinearLayoutCompat").click()#点击更多
13     poco1(text="清空聊天记录").click()#点击清空聊天记录
14     poco1(text="清空").click()#点击清空
15     stop_app("com.tencent.mm")#关闭微信

6.引用其他air文件的方法:

如果有很多重复的操作,可以将这些重复的操作写到一个公用的air文件里面,然后再在用例里面引用这个公用的air文件的方法就可以:

举例,有一个名叫gongyou.air的文件,里面有一个clear_wechat的方法,这个clear_wechat方法就是一个清除微信聊天记录的用例,如果需要在用例中用到这个clear_wechat,就需要在用例中引用这个文件,然后倒入这个引用文件中的clear_wechat方法,如下:

 1 # -*- encoding=utf8 -*-2 __author__ = "xhong"3 4 from airtest.core.api import *5 from poco.drivers.android.uiautomation import AndroidUiautomationPoco6 from poco.exceptions import PocoNoSuchNodeException7 from poco.exceptions import PocoTargetTimeout8 ST.PROJECT_ROOT = "D:\code\AirtestCase"#引用公用air的路径9 using("gongyou.air")
10 from gongyou import clear_wechat

7.IDE的使用

IDE的设置和使用官网有具体的说明:http://airtest.netease.com/docs/cn/7_settings/1_ide_settings.html#editor

7.1、新建脚本

点击脚本窗口右侧的“+”号,会新建脚本,新建的脚本默认会生成下面的代码;如下:

7.2 Airtest辅助窗的使用

需要图像识别的使用的是Airtest辅助窗;

7.3 poco辅助窗的使用:

符合下列框架的APP的UI定位使用的是POCO辅助窗;

已安卓原生应用举例:

选择Android原生应用之后,会提示导入相关的库,选择yes就好;

7.4、执行脚本与查看报告

执行单个脚本,在airtest中执行就可以,如下:

7.5 执行多个脚本,需要在python中跑代码

多个脚本批量执行,在Airtest IDE中无法实现,需要单独写一个框架,并使用python写一个执行入口文件myrunner.py;

多个脚本串行执行脚本请参考:https://blog.csdn.net/u010127154/article/details/83375659

执行myrunner.py文件时,需要更改自己的AllCase路径和自己手机的设备号:

说明: 1.所有的需要执行的case写好之后都放在AllCase文件夹里面;

2.执行时只需要执行myrunner.py文件就可以了。

3.批量执行的报告会汇总到/Users/xhong/Documents/UI/AirtestCas/AllCase/summary.html文件里面,所有case执行完成之后,打开semmary.html文件可以看到汇总页面,点击每一个case名称可以查看具体的测试报告的内容;

7.6 需要注意的问题:

airtest 测试需要注意的问题:

1、在使用Airtest过程中,遇到的错误,请先到官网http://airtest.netease.com/docs/cn/9_faq.html,查找相应问题的解决方法,这个很重要,可以节省很多时间;
2.查看批量脚本的执行报告时,不要再IDE里面查看,直接打开文件就可以;
3.图像识别时,要截取高分辨率的手机来适配低分辨率的手机;
4.最好使用华为或是三星的手机,其他的手机启动pocoserver时可能会失败,导致脚本执行失败;

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记:《NCT全国青少年编程能力等级测试教程Python语言编程二级》

NCT全国青少年编程能力等级测试教程Python语言编程二级 ISBN:9787302565857 绪论 专题1 模块化编程 考查方向 考点清单 考点 模块化编程 (一)模块化编程思想:结构清晰、降低复杂度;提高代码复用率;易于扩展、维护,方便阅读、优化。 …

猫头虎分享已解决Bug || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10]

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

奶茶点餐|奶茶店自助点餐系统|基于微信小程序的饮品点单系统的设计与实现(源码+数据库+文档)

奶茶店自助点餐系统目录 目录 基于微信小程序的饮品点单系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、商品信息管理 2、商品评价管理 3、商品订单管理 4、用户管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示: 五、核心代码 …

【More Effective C++】条款2:使用C++转型操作符

C旧式转型的缺点包括: 没有类型安全检查:允许将任何指针转换为其他类型指针,可能导致未定义行为的错误;难以识别和维护:语法(type)expression 或 type(expression)在代码中难以被快速识别; 为了解决上述问…

算法||如何优化算法?算法如何评价和分析

目录 1.一个好的算法所具备的特性 2.算法分析‐‐‐评价算法 3.算法复杂度 4.时间复杂度 如何统计在程序中统计算法执行语句数 5.空间复杂度 6.程序优化的最核心思路: 总结 1.一个好的算法所具备的特性 正确: 符合语法,能够编译、链接 能够正确处理简单的输入…

Rust语言之字符串

文章目录 一、字符二、字符串1.&str2.string创建字符串遍历字符串变更字符串指定位置插入字符串字符串拼接宏拼接(format!) 三、切片1.字符串切片2.数组(向量)切片 Rust语言设计官方教程 一、字符 Rust提供char为字符存储变量…

Qt知识点总结目录

一.Qt安装配置和创建项目 Qt所有版本下载地址 Qt安装配置教程windows版(包括:Qt5.8.0版本,Qt5.12,Qt5.14版本下载安装教程)(亲测可行) QT从入门到入土(一)——Qt5.14.…

Linux操作系统基础(八):Linux的vi/vim编辑器

文章目录 Linux的vi/vim编辑器 一、vi/vim编辑器介绍 二、打开文件 三、VIM编辑器的三种模式(重点) 四、命令模式相关命令 五、底行模式相关命令 Linux的vi/vim编辑器 一、vi/vim编辑器介绍 vi是visual interface的简称, 是Linux中最经典的文本编辑器 vi的核心设计思想…

技术精英求职必备:网络安全工程师简历制作全指南

简历编写核心原则 撰写针对网络安全工程师职位的简历时,关键在于准确展现您在网络安全领域的专业技能、项目经验和技术成就。简历应作为您展示安全策略制定、风险管理、入侵检测和响应能力的窗口。确保每一项经历和技能都紧密贴合网络安全工程师的角色要求。具体的…

在 Windows上恢复删除照片的 4 种有效方法

您是否曾在 Windows 7/8/10/11 中不小心删除过照片?如何轻松快速地恢复已删除的照片?在这里这篇文章列出了几种在Windows 11/10/8/7中恢复已删除照片的可行方法,而MiniTool数据恢复软件 是丢失照片恢复的最佳选择。 意外删除的照片 根据一项…

蓝桥杯官网练习题(翻转)

问题描述 小蓝用黑白棋的 n 个棋子排成了一行,他在脑海里想象出了一个长度为 n 的 01 串 T,他发现如果把黑棋当做 1,白棋当做 0,这一行棋子也是一个长度为 n 的 01 串 S。 小蓝决定,如果在 S 中发现一个棋子…

口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)

口腔小程序目录 目录 基于微信小程序的口腔门诊预约系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序前台界面实现 2、后台管理员模块实现 四、数据库设计 1、实体ER图 2、具体的表设计如下所示: 五、核心代码 六、论文参考 七、最新…

20190726 ApacheHttpClient-自签证书与系统证书共存

要使用HTTPClient-4.5.2做一些连接;但是有的域名是使用的自签证书,有的是CA签发证书;同时又不想跳过证书验证又想使用一个HTTPClient; 如果单单实现验证只使用自签证书或者只使用CA证书的域名比较简单;前者只需要new l…

【调试】pstore原理和使用方法总结

什么是pstore pstore最初是用于系统发生oops或panic时,自动保存内核log buffer中的日志。不过在当前内核版本中,其已经支持了更多的功能,如保存console日志、ftrace消息和用户空间日志。同时,它还支持将这些消息保存在不同的存储…

Avalonia 虚拟化

应用虚拟化技术是管理大量数据时优化性能的一种方法,特别是在使用如Avalonia这样的UI框架时。虚拟化可以帮助减少内存使用并提高应用的响应速度,因为它只加载用户可以看到的元素,而不是全部数据。以下是Avalonia中使用虚拟化的一个基本例子&a…

根据loss 曲率自动微调学习率代码示例

根据loss 曲率自动微调学习率代码示例 代码代码解析代码 from tqdm import tqdm from yan import CvFo import paddle import pandas as pd import numpy as npdef get_loss(loss):loss = np.array

JavaScript 遍历文档生成目录结构

JavaScript 遍历文档生成目录结构 要遍历 HTML 文档并生成目录结构&#xff0c;你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码&#xff0c;演示了如何遍历文档中的标题元素&#xff08;例如 <h1>、<h2>、<h3> 等&#xff09;&…

Rust基础拾遗--核心功能

Rust基础拾遗 前言1.所有权与移动1.1 所有权 2.引用3.特型与泛型简介3.1 使用特型3.2 特型对象3.3 泛型函数与类型参数 4.实用工具特型5.闭包 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总&#xff0c;读者通读此系列文章就可以轻松的把该语言基础捡起来…

input框中添加一个 X(关闭/清空按钮)

要在输入框&#xff08;<input> 元素&#xff09;中添加一个 X&#xff08;关闭/清空按钮&#xff09;&#xff0c;可以使用 CSS 和 JavaScript 实现。 HTML&#xff1a; <div class"input-container"><input type"text" id"myInput…

在VSCode中创建Java项目

在VSCode中创建Java项目 首先&#xff0c;保证安装了Java的JDK. WinR -> 输入cmd -> 输入 java -version -> 然后可以看到安装的JDK版本&#xff0c;如果没安装可以去找教程。 JDK安装参考教程 打开VSCode&#xff0c;打开扩展&#xff08;Ctrl Shift S&#xff…