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/

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图片:

扫描二维码关注公众号,回复: 15266928 查看本文章

在这里插入图片描述
比如你做了一个操作要等几秒下一个页面上的元素才显示出来,通常的做法是强制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"))

==============================================================================
以上就是本次的全部内容,喜欢的宝子们,麻烦点个赞+收藏+关注,一键三连啦~ 欢迎关注下方我的公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享各类测试开发知识干货,你的支持就是作者更新最大的动力。下一篇文章我们将继续分享Airtest的其他常用API,看看如何使用它们解决各类自动化测试需求!

猜你喜欢

转载自blog.csdn.net/baidu_28340727/article/details/129897834
今日推荐