此文章来源于项目官方公众号:“AirtestProject”\
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

前几天有个新手同学在 Airtest 官群里问了这样一个问题:

我是新手,在图片范围内随机点击 ,用 Airtest 怎么实现?代码?

那我们就以这个问题为例,浅浅聊一下,怎么把需求转化成我们的 Airtest 代码。

2. 了解 Airtest

首先新手同学对 Airtest 要有以下几点认知:

3. 分析需求,转化成代码

1)查文档,找现成方法

有了以上 2 点认知后,我们再回到需求,“在图片范围内随机点击”,第一步我们要做的就是查询官方教程文档,看下有没有现成的方法可以使用:

当我们查阅 Airtest 的教程文档之后,发现 Airtest 确实提供了点击图片内非中心坐标的方法,就是指定target_pos,但是只能点击图片内的 9 个点:

这里似乎并不太符合在图片范围内随机点的需求。随后我们又查询了文档,发现 Airtest 也没有提供随机点击的方法。

2)分析需求,自己实现

那么我们到这里就需要进入到第二步,分析需求,看看需求都有哪些难点需要我们实现:

针对第一个难点,其实我们分别拿到目标图片 x、y 坐标的最小、最大值,就能确认坐标范围了。

再进一步思考,一张图片 x 最小值是图片的最左侧,最大值是图片最右侧;y 最小值是图片最上方,最大值是图片最下方;那就意味着,我们只要拿到图片左上角和右下角的坐标,就能完全确认目标图片 x、y 坐标的最小、最大值,进而确认图片坐标范围。

第一个难点解决后,再来看第二个难点,随机点,这里就要借助 python 的标准库random了,能帮助我们生成一个随机数的函数。

3)将思考转化成代码

最后一步就是将我们刚才分析需求,得到的思路,转化成代码:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
import random

auto_setup(__file__)

# 定义函数,得到目标图片的坐标范围
def pos_range():
    if exists(Template(r"tpl1697515204054.png", target_pos=1, record_pos=(-0.16, 0.154), resolution=(2960, 1440))):
        up_pos = exists(Template(r"tpl1697515204054.png", target_pos=1, record_pos=(-0.16, 0.154), resolution=(2960, 1440))) # 利用target_pos=0,拿到目标图片左上角的坐标
        down_pos = exists(Template(r"tpl1697515204054.png", target_pos=9, record_pos=(-0.16, 0.154), resolution=(2960, 1440))) # 利用target_pos=9,拿到目标图片右下角的坐标
        x = (int(up_pos[0]),int(down_pos[0])) # 拿到图片x坐标的范围
        y = (int(up_pos[1]),int(down_pos[1])) # 拿到图片y坐标的范围
        return x,y
    else:
        print("目标图片不存在")

# 分别拿到图片x坐标与y坐标的范围值
pos_r = pos_range()
x = pos_r[0]
y = pos_r[1]

# 在x、y的坐标范围内生成随机数
x_range = random.randint(x[0],x[1])
y_range = random.randint(y[0],y[1])

# 点击图片范围内任意坐标
touch([x_range,y_range])

4. 小结

最后,希望新手同学想要用 Airtest 动手实现一个需求的时候,别忘了以下几个步骤:

这里附上我们官方教程文档的网址,欢迎同学们查阅哦:https://airtest.doc.io.netease.com/

AirtestIDE 下载:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:117973773


↙↙↙阅读原文可查看相关链接,并与作者交流