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

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"))

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

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

软件测试面试文档

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

在这里插入图片描述

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

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

相关文章

记录创建粒子的轻量级JavaScript库——particles.js(可用于登录等背景显示)

文章目录 前言一、下载particles.js二、引入particles.js并使用三、配置数据说明如有启发,可点赞收藏哟~ 前言 本文记录使用创建粒子的轻量级JavaScript库 particles.js 可用于登录等背景显示 一、下载particles.js 先下载particles.js库,放在项目libs…

【古月居《ros入门21讲》学习笔记】08_发布者Publisher的编程实现

目录 说明: 1. 话题模型 图示 说明 2. 实现过程(C) 创建功能包 创建发布者代码(C) 配置发布者代码编译规则 编译并运行 编译 运行 3. 实现过程(Python) 创建发布者代码(…

7Docker搭建es和kibana

一、安装es 1.拉取镜像 sudo docker pull elasticsearch:7.12.0 elasticsearch:7.12.0:我安装的版本是7.12.0,可以根据实际的情况安装 创建docker容器挂在的目录: sudo mkdir -p /opt/elasticsearch/config sudo mkdir -p /opt/elasticsearch/data s…

算法通关村第一关—青铜挑战—用Java基本实现各种链表操作

文章目录 第一关—链表【青铜挑战】1.1 单链表的概念1.2 链表的相关概念1.3 创建链表 - Java实现1.4 链表的增删改查1.4.1 遍历单链表 - 求单链表长度1.4.2 链表插入 - 三种位置插入(1)在链表的表头插入(2)在链表的中间插入&#…

Testlink 1.9.20+phpstudy_pro安装遇到的问题

phpstudy_pro启动了Apache2.4.39和Mysql5.7.26,php的版本是7.3.4zai。 安装Testlink 1.9.19时没有数据库的问题,安装Testlink 1.9.20时遇到了数据库问题,如下图所示: 网上搜索“Failed!Mysql Database cannnot be used”,给出的…

香港身份、香港永居身份、香港护照区别,三种证件之间是什么关系?

香港身份、香港永居身份、香港护照区别,三种证件之间是什么关系? 在港“通常性”住满7年之后,可以申请永居身份! 香港身份:也可以称之为临时身份,无论通过香港优才计划、高才通计划、专才计划或者留学拿身份…

ANN人工神经网络:从基础认知到现实理解

什么是神经网络? 神经网络的再认知 前面我们了解过,人工神经网络(Artificial Neural Network,ANN)是人类为了模仿人大脑的神经网络结构创建出来的一种计算机系统结构。但如果仔细深入到神经网络当中,会慢…

Deep Learning(wu--84)

文章目录 2偏差和方差正则化梯度消失\爆炸权重初始化导数计算梯度检验OptimizationMini-Batch 梯度下降法指数加权平均偏差修正RMSpropAdam学习率衰减局部最优问题 调参BNsoftmax framework 2 偏差和方差 唔,这部分在机器学习里讲的更好点 训练集误差大&#xff…

修改YOLOv5的模型结构第三弹

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 任务任务拆解 开始修改C2模块修改yolo.py修改模型配置文件 模型训练 上次已…

点击元素以外的事件监听

在项目中,我们经常会遇到需要监听目标元素以外的区域被点击或鼠标移入移出等需求。 例如下面我们有一个表格里面嵌套表单的组件 我希望点击n行的时候,n行的元素变成表单元素进行输入或者选择, 当我点击其他其他区域n行又会恢复成数据展示…

web和微信小程序设置placeholder样式

文章目录 一、场景二、web2.1、概念2.2、用法2.3、样式 三、小程序四、最后 一、场景 在页面布局时经常会用到input输入框,有时为了提示用户输入正确的信息,需要用placeholder属性加以说明。 二、web 2.1、概念 placeholder 是HTML5 中新增的一个属性…

拼图 游戏

运行出的游戏界面如下:按住A不松开,显示完整图片;松开A显示随机打乱的图片 User类 package domain;/*** ClassName: User* Author: Kox* Data: 2023/2/2* Sketch:*/ public class User {private String username;private String password;p…

C# WPF上位机开发(倒计时软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 生活当中,我们经常会遇到倒计时的场景,比如体育运动的时候、考试的时候等等。正好最近我们学习了c# wpf开发,完…

Azure Machine Learning - 创建Azure AI搜索索引

目录 一、先决条件检查空间 二、创建和加载索引启动向导连接到 数据源跳过认知技能配置配置索引配置索引器 三、监视索引器进度四、检查搜索索引结果五、添加或更改字段六、使用搜索浏览器查询七、运行更多示例查询八、清理资源 在本文中,你将使用导入数据向导和由虚…

MATLAB实战 | APP设计

01、应用实战 【例1】生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App,界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法,中间的旋钮用于设置视点方位角和仰角,右下部的分档旋钮用于设…

计算机毕业设计 基于协同推荐的白酒销售管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

vivado综合分析与收敛技巧2

1、分解深层存储器配置 , 实现功耗与性能平衡 在深层存储器配置中 , 可使用综合属性 RAM_DECOMP 实现更好的存储器分解并降低功耗。此属性可在 RTL 中设置。将RAM_DECOMP 属性应用于存储器时 , 存储器是在较宽的原语配置中设置的 &#x…

【开源视频联动物联网平台】流媒体传输协议HLS,FLV的功能和特点

HLS(HTTP Live Streaming)和FLV(Flash Video)都是用于视频流传输的协议或容器格式,但它们在某些方面有着显著的区别和特点。 HLS是一种由苹果公司开发的用于流媒体传输的协议,而FLV则是Adobe公司开发的用于…

数据挖掘之时间序列分析

一、 概念 时间序列(Time Series) 时间序列是指同一统计指标的数值按其发生的时间先后顺序排列而成的数列(是均匀时间间隔上的观测值序列)。 时间序列分析的主要目的是根据已有的历史数据对未来进行预测。 时间序列分析主要包…

详解前后端交互时PO,DTO,VO模型类的应用场景

前后端交互时的数据传输模型 前后端交互流程 前后端交互的流程: 前端与后端开发人员之间主要依据接口进行开发 前端通过Http协议请求后端服务提供的接口后端服务的控制层Controller接收前端的请求Contorller层调用Service层进行业务处理Service层调用Dao持久层对数据持久化 …