Airtest API精讲之touch()

上期回顾:Airtest源码分析--图像识别整体流程


以下基于
python3.8;airtestIDE1.2.11;airtest1.2.2;pocoui1.0.83

首先明确一点,我们今天要讲的是Airtest框架的touch(),不是Poco框架的,一般我们说Airtest,其实应该指的是Airtest Project,具体这些概念的关系是什么,可以看之前文章:Airtest Project——UI自动化利器介绍

touch()的文档之前在Airtest核心API汇总已经写过,这里再复制一遍。

 

touch(v, times=1, **kwargs)
在当前设备上进行点击

 

参数:
v        – 点击位置,可以是一个 Template 图片实例,或是一个绝对坐标 (x, y)
times  – 点击次数
kwargs – 平台相关的参数 kwargs,请参考对应的平台接口文档

返回:
实际点击位置坐标 (x, y)

支持平台:
Android, Windows, iOS

 

在讲实际用法前,我们先来看下touch()的源码:

 1# 文件位置:your_python_path/site-packages/airtest/core/api.py
2def touch(v, times=1, **kwargs):
3    if isinstance(v, Template):
4        pos = loop_find(v, timeout=ST.FIND_TIMEOUT)
5    else:
6        try_log_screen()
7        pos = v
8    for _ in range(times):
9        G.DEVICE.touch(pos, **kwargs)
10        time.sleep(0.05)
11    delay_after_operation()
12    return pos
13
14click = touch  # click is alias of touch

touch支持点击坐标或图片,所以第一个参数v既可以是一个Template图片实例,也可以是一个绝对坐标(x, y)。

  • 传入图片的情况,如果你是使用的AirtestIDE,只需简单操作,IDE会自动帮你生成Template实例代码。(touch在AirtestIDE中的用法可以看AirtestIDE基本功能(一))这里再强调一下,如果嵌入Windows应用,框选后还要再双击截图,IDE才会生成touch语句。如果你不是通过AirtestIDE自动生成代码,而想自己写,或者在生成之后还想改下代码,可以看之前的Template文章Airtest-API精讲之Template

  • 如果是传入的绝对坐标,写成tuple(x,y)或list[x,y]都可以。

第3行if isinstance(v, Template)就是判断这个v是不是Template,如果是图片,则通过loop_find()找到坐标并赋值给pos(loop_find的逻辑可以看之前文章Airtest源码分析--图像识别整体流程),如果是坐标则直接赋值给pos

第8行for _ in range(times),循环time次。

第9行G.DEVICE.touch(pos, **kwargs),执行当前设备的touch()方法,Android、Windows、iOS的touch内部逻辑是不一样。

第12行,返回坐标,这个主要是针对传入图片的情况。

第14行,把touch赋值给chick。主要是在不同软件不同平台上,点击有时叫touch,有时叫click,那在Airtest中还是叫touch,但你用click也行。

 

实例演示

点击某个图片

Airtest API精讲之touch()

1# 代码模式
2touch(Template(r"tpl1632195655122.png", record_pos=(-0.238, -0.512), resolution=(1080, 2340)))

点击某个绝对坐标

1touch([150,876])
2touch((150,876))

长按3秒

duration参数是点击的时长,默认是0.01。

Airtest API精讲之touch()

1# 代码模式
2touch(Template(r"测试工程师小站.png", record_pos=(-0.238, -0.512), resolution=(1080, 2340)),duration=3)
3
4touch((150,876),duration=3)

点击3次

times参数是点击次数,默认为1。

Airtest API精讲之touch()

1# 代码模式
2touch(Template(r"测试工程师小站.png", record_pos=(-0.238, -0.512), resolution=(1080, 2340)),times=3)
3
4touch((150,876),times=3)

右键点击(Windows专有)

Windows平台下的touch可以传入right_click这个参数,默认值为False,如果是要鼠标右键点击,给right_click赋值为True即可。

Airtest API精讲之touch()

1# 代码模式
2touch(Template(r"windows.png", record_pos=(-0.238, -0.512), resolution=(1080, 2340)),right_click=True)
3
4touch((150,876),right_click=True)

 

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

Airtest API精讲之touch()

上一篇:学习笔记 - 素数


下一篇:瓦片切图算法以及并发切图实践(上篇)