UI自动化测试的正确姿势 —— Airtest设备连接API详解第一篇

news2025/1/21 0:58:56

UI自动化测试的正确姿势-Airtest设备连接&API详解第一篇

一、背景

Airtest作为一款优秀的自动化测试工具,有着强大的API功能,处理日常自动化测试过程中需要的各类操作。今天就给大家逐一介绍关于设备连接和常用API部分,结合自动化测试中的各类需求,看看如何通过使用Airtest来快速实现。

二、设备连接

1、Android真机连接

  • 请使用USB线连接手机和电脑,手机上出现的允许USB调试 弹窗点击确定
  • 点击连接面板中的刷新ADB 按钮,设备列表将会刷新
  • 点击列表内对应设备的Connect 完成连接
  • 若设备未刷出,点击重启ADB 按钮.

2、IOS真机连接

IOS的连接相对比较复杂,可以参看官方文档链接:https://airtest.doc.io.netease.com/IDEdocs/3.2device_connection/4_ios_connection/

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

3、Windows窗口连接,可通过以下三种方式:

  • 选择游戏画面,将会有一个绿色/红色细线框,实时框选出鼠标位置对应的窗口
  • 搜索窗口,在弹出的窗口list中选择要连接的窗口直接连接


以上两种都是将窗口嵌入到Airtest IDE中:


如果窗口比较大,不适合嵌入到Airtest中的,或者嵌入后显示异常的,可以在"选项"》"设置"中,勾选上"Windows窗口无嵌入连接"选项:


这样就可以使用无嵌入式的方式来连接窗口:

最后,如果被测的软件是需要全屏显示的,可以通过连接桌面来实现,点击连接桌面按钮:


运行时,将Airtest IDE最小化,让被测软件显示在最上层即可。

三、Airtest辅助窗常用API

想要用好Airtest,辅助窗中的功能是必不可少的,用好它能解决90%以上的操作问题。工欲善其事,必先利其器,因此我们先来介绍怎样使用这些功能来帮助我们解决自动化中常见的需求:

1、touch

最常用的操作,鼠标左键点击。框选你要点击的地方即可。默认是点击框选图片的中心位置。参数:

根据参数可以看出:

  • 可以点击图片,也可以点击绝对坐标(x,y)
  • 可以控制点击的次数。但是实测发现,有时候想双击,设置times=2,
    并不能实现双击效果,而是要用另外一个函数:double_click来实现双击效果
  • 可以设置鼠标左边点击后按住的时间,默认是0.01s, 就是单击效果。如果想实现长按1秒的效果,设置duration=1
  • 可以通过设置right_click=True来实现右键点击效果(仅限windows模式)

2、wait

常用操作,等待当前画面上出现某个匹配的Template图片:


比如你做了一个操作要等几秒下一个页面上的元素才显示出来,通常的做法是强制sleep几秒之后,再操作。而用wait函数,则可以设置每隔多长时间就找一次,找到了就继续下一步,而不是每次都死等那么长的时间,可以提高脚本运行的速度。有以下参数可以设置:

  • v – 要等待出现的目标Template实例
  • timeout – 等待匹配的最大超时时长,默认为None即默认取 ST.FIND_TIMEOUT 的值
  • interval – 尝试查找匹配项的时间间隔(以秒为单位)
  • intervalfunc – 在首次尝试查找匹配失败后的回调函数

示例1:

# 每3秒查找一次, 120秒之后还没有找到则超时报错
wait(Template(r"tpl1606821804906.png"), timeout=120, interval=3)

示例2:

# 查找目标失败时,指定回调自定义的"notfound"函数
def notfound():
    print("No target found")
wait(Template(r"tpl1607510661400.png"), intervalfunc=notfound)

3. swipe

在当前设备画面上进行一次滑动操作:

  • v1 – 滑动的起点,可以是一个Template图片实例,或是绝对坐标 (x, y)
  • v2 – 滑动的终点,可以是一个Template图片实例,或是绝对坐标 (x, y)
  • vector – 滑动动作的矢量坐标,可以是绝对坐标 (x,y) 或是屏幕百分比,例如 (0.5, 0.5)

常用场景1:当前屏幕上没有你要操作的内容,需要手机上滑0.5个屏幕,才能点击你想点击的内容

w,h=device().get_current_resolution()#获取手机分辨率
touch([0.5*w, 0.5*h])#点击手机中心位置
swipe((0.5*w,0.8*h),vector=(0,-0.5),duration=0.1) #在0.1s内上滑0.5个屏幕

常用场景2:app打开后,有5个介绍页,滑动后才能正式进入app首页,这个时候就可以使用swipe函数来实现:

# 收取设备的宽和高
width, height = device().get_current_resolution()
# 计算滑动点的起始位置和结束位置
start_pt = (width * 0.9, height / 2)
end_pt = (width * 0.1, height / 2)
# 滑动5次,每次中间睡眠1秒,等待设备响应
for i in range(5):
    swipe(start_pt, end_pt)
    sleep(1)

4. exists

检查设备上是否存在给定目标, 如果未找到目标,则返回False,否则返回目标的坐标:

常用场景:比如我们进入某个页面时,屏幕上可能会弹出一个弹窗广告,但也有可能不弹。如果弹出了弹窗广告,我们就要先关掉弹窗,然后继续操作下一步。

# 先判断是否存在弹窗图片,存在就点击弹窗图片上的关闭按钮
if exists(Template(r"弹窗图片.png")):
    touch(Template(r"弹窗图片上的关闭按钮.png"))

===================================================================
以上就是本次的全部内容,喜欢的宝子们,麻烦点个赞+收藏+关注,一键三连啦~

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

leetCode 131.分割回文串 + 回溯算法 + 图解 + 笔记

131. 分割回文串 - 力扣(LeetCode) 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串 示例 1: 输入:s "aa…

【Linux】Linux中git的基本使用(三板斧)

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和Linux还有算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 …

DeepFM介绍PPT

推荐系统是信息过滤系统的一种,它们的目的是预测用户可能感兴趣的产品或服务。 它们在各种在线平台中都非常重要,包括电子商务、视频流服务、社交媒体和在线广告(如谷歌广告)。 推荐系统不仅可以增加用户满意度和用户留存&#x…

EMA训练微调

就是取前几个epoch的weight的平均值,可以缓解微调时的灾难性遗忘(因为新数据引导,模型权重逐渐,偏离训练时学到的数据分布,忘记之前学好的先验知识) class EMA():def __init__(self, model, decay):self.…

了解HashMap底层数据结构吗

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

【doccano】文本标注工具——属性级情感分析标注自己的业务数据

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【doccano】文本标注工具——属性级情感分析标注自己的业务数据 1.说明2.前提条件3.doccano创建项目4.添加数据集5.添加标签6.标注数据7.导出数据转换格式 1.说明 2.前提条件 确保doccano已经安装完成 可以参考文…

a-table:表格组件常用功能记录——基础积累

antdvue是我目前项目的主流&#xff0c;在工作过程中&#xff0c;经常用到table组件。下面就记录一下工作中经常用到的部分知识点。 table组件 <a-table :dataSource"tableData":rowKey"(row) > row.id":scroll"{ y: 550 }"bordered:pag…

文件基础知识

计算机中的流&#xff1a;在C语言中将通过输入/输出设备&#xff08;键盘、内存、显示器、网络等&#xff09;之间的数据传输抽象表述为“流”。 1、文本流和二进制流 在文本流中输入输出的数据是一系列的字符&#xff0c;可以被修改在二进制流中输入输出数据是一系列字节&am…

详解—[C++ 数据结构]—AVL树

目录 一.AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 3.1插入方法 四、AVL树的旋转 1. 新节点插入较高左子树的左侧---左左&#xff1a;右单旋 2. 新节点插入较高右子树的右侧---右右&#xff1a;左单旋 3.新节点插入较高左子树的右侧---左右&#xff1a;先左单旋…

C++-多态常见试题的总结

关于C多态的介绍&#xff1a;C-多态-CSDN博客 1. A.只有类的成员方法才可以被virtual修饰&#xff0c;其他的函数并不可以 B.正确 C.virtual关键字只在声明时加上&#xff0c;在类外实现时不能加 D.static和virtual是不能同时使用的 2. A.多态分为编译时多态和运行时多态&…

Linux详解——安装JDK

目录 一、下载jdk 二、tar包安装 三、rpm包安装 一、下载jdk 1.下载jdk https://www.oracle.com/technetwork/java/javase/downloads/index.html 2.通过CRT|WinSCP工具将jdk上传到linux系统中 二、tar包安装 # 1.将JDK解压缩到指定目录 tar -zxvf jdk-8u171-linux…

ubuntu系统进入休眠后cuda初始化报错

layout: post # 使用的布局&#xff08;不需要改&#xff09; title: torch.cuda.is_available()报错 # 标题 subtitle: ubuntu系统进入休眠后cuda初始化报错 #副标题 date: 2023-11-29 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背…

大杀四方,华为组建智能车大联盟 | 百能云芯

最近&#xff0c;华为和一系列汽车公司合资的新公司迎来新的进展。除了与长安汽车的合作外&#xff0c;据传华为已经邀请奇瑞、赛力斯、北汽以及江淮汽车入股新公司&#xff0c;这将使华为成为中国智能汽车平台的重要主导者。 根据澎湃新闻的报道&#xff0c;知情人透露&#x…

装饰模式学习

背景 首先明确装饰模式是结构型设计模式的一种&#xff0c;但是结构型设计模式有什么特点呢。装饰模式的业务是给人穿衣服。 步骤 历史发展 版本1&#xff1a;只有一个Person类&#xff0c;这个类由三部分构成&#xff0c;本身的有参构造函数&#xff0c;给当前对象传不同衣…

外包干了5个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

信创之国产浪潮电脑+统信UOS操作系统体验8:安装Docker并进行测试验证scratch镜像

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、前言 今日在进行Docker容器相关知识的学习&#xff0c;不过学习环境都不是基于统信UOS操作系统的&#xff0c;为了实验&#xff0c;老猿觉得手头国产浪潮电脑统信UOS操作系统就是原生的linux操作系统&a…

LiveData源码分析,粘性事件,数据倒灌

最近面试天天被虐&#xff0c;有个问题问的很频繁&#xff0c;就是 LiveData 的数据倒灌问题怎么解决。 我不知道有多少人连数据倒灌是什么都没听过的&#xff0c;更不要说什么解决方案啦。 我按照我的理解描述一下数据倒灌&#xff1a;就是设置了 LiveData 的数据之后&#…

“rhdf5filters.so’ not found when install ‘glmGamPoi‘ package

在R中安装glmGamPoi包的时候&#xff0c;出现了如下报错&#xff1a; install.packages(glmGamPoi) 尝试方案一&#xff1a; sudo apt install pkg-config libhdf5-dev安装lighdf5-dev&#xff0c;并将安装路径链接至usr/lib/文件。 locate rhdf5filters.so sudo ln -s /hom…

武汉建筑类初级职称助理工程师电子版证书申报

武汉建筑类初级职称助理工程师电子版证书申报 目前大家较为关注的是湖北省的助理工程师/初级职称评审出来之后是否可以网上查询。市面上还有一些地级市的区人社职改办出纸质版证书&#xff0c;职称证书、红头文件、评审表齐全&#xff0c;但是查询方式还是老一套的查询方式&am…

三勾商城新功能发布-多包裹订单

在不同场景下&#xff0c;商家可能需一笔订单需要分成多个包裹、分批发货&#xff0c;来看看怎么操作吧。 前端截图 后台截图 三勾小程序商城基于springbootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xf…