首页 > 其他分享 >新手如何用Airtest实现在图片范围内随机点击?

新手如何用Airtest实现在图片范围内随机点击?

时间:2023-10-19 11:01:19浏览次数:41  
标签:随机 pos 点击 坐标 Airtest 新手 图片

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

1. 前言

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

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

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

2. 了解Airtest

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

  • ① Airtest是一个图像识别框架,它能在屏幕上用图像识别来找到想操作的位置并点击,所以Airtest本质上点击的是目标图片的坐标,默认是中心点
  • ② Airtest是python第三方库,除了Airtest本身的接口之外,我们随时可以import python的标准库或者其它第三方库,一起使用

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

1)查文档,找现成方法

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

  • ① 一般情况下,Airtest都是点击图片中心位置,不知道有没有点击图片内其它坐标的方法
  • ② 随机点击,怎么实现在图片内随机点击这个行为,不知道Airtest有没有随机点的方法

当我们查阅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

标签:随机,pos,点击,坐标,Airtest,新手,图片
From: https://www.cnblogs.com/AirtestProject/p/17774235.html

相关文章

  • 禁止点击浏览器箭头回退
    方法一:通过监听 popstatepopstate的怎么用?HTML5的新API扩展了window.history,使历史记录点更加开放了。可以存储当前历史记录点pushState、替换当前历史记录点replaceState、监听历史记录点popstate。pushState、replaceState两者用法差不多。在需求需要的文件添加window.a......
  • Java 新手如何使用Spring MVC 中的双向数据绑定?
    数据绑定,正如其名称本身一样,是一个不言自明的词。在数据绑定中,我们要做的是捕获或存储数据,以便我们可以根据需要将该数据与另一个资源绑定(例如在前端部分显示数据),或者我们也可以从一个变量并根据我们的要求显示它。例如,有一个谷歌表单,用户在该表单中输入所有详细信息,我们必须捕获/......
  • Java 新手如何使用Spring MVC 中的查询字符串和查询参数?
    Java新手如何使用SpringMVC中的查询字符串和查询参数?根据维基百科的说法,“查询字符串是统一资源定位符(URL)的一部分,它为指定的参数分配值。查询字符串通常包括由Web浏览器或其他客户端应用程序添加到基本URL的字段,例如作为HTML的一部分、选择页面的外观或跳转到多媒体内容......
  • 新手上路:如何进行网络映射,实现公网访问安防视频LiteCVR平台?
    最近接到一个用户需求,需要在现场进行简单的映射,从而实现公网访问LiteCVR的Web页面,方便运维。今天我们来介绍下实现方法。LiteCVR平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可提供......
  • vue点击文字打开扩展列
    <template><custom-cardshadow="hover"bordered><divclass="system-search"><divclass="search-box"><el-inputclass="box-input"placeh......
  • 新手教程系列:群晖QuickConnect:最简单的群晖外网访问NAS工具
    通过群晖Synology免费提供的QuickConnect服务,您可在外部网络轻松连接到群晖SynologyNAS,而无需设置端口转发规则或其它复杂的网络设置。QuickConnect可让您通过一个简单的可自定义地址(如 quickconnect.to/example)进行连接。这是一个简单易用,快捷部署的外网访问方式,适合群晖......
  • 新手教程系列:如何在Windows电脑上访问Synology群晖NAS
    Synology群晖NAS经过专门设计,可快速简单地在本地网络中存储和共享文件,让您直接访问Synology群晖NAS上的文件而没有每次登录DSM的麻烦。例如,您可用Windows资源管理器将文件保存到Synology群晖NAS,如同使用其它网络设备一样。1、打开Windows资源管理器窗口并进入计算......
  • 新手教程系列:如何在MAC电脑上访问Synology群晖NAS
    SynologyNAS经过专门设计,可快速简单地在本地网络中存储和共享文件,让您直接访问SynologyNAS上的文件而没有每次登录DSM的麻烦。例如,您可用Finder将文件保存到SynologyNAS,如同使用其它网络设备一样。1、打开Mac计算机上的Finder。2、沿屏幕顶部找到菜单栏。3、单击......
  • 新手教程系列:如何还原群晖 Synology NAS 意外删除或丢失的文件?
    有多种工具可恢复从群晖SynologyNAS意外删除的数据。首先建议为每个共享文件夹启用回收站选项。还有其他备份解决方案或第三方软件可用于替代回收站或与回收站结合使用。本文将指导您完成在群晖DSM上启用回收站,并向您介绍一些备选选项,以帮助您恢复已删除的文件。使用回收站......
  • 将点击跳转放置后台
    prettynum_list.html{%extends'layout.html'%}{%blockcontent%}<divclass="container"><divstyle="margin-bottom:10px"class="clearfix"><aclass="btnbtn-success"......