Airtest结合Poco对控件实施精准截图,学起来!

这篇具有很好参考价值的文章主要介绍了Airtest结合Poco对控件实施精准截图,学起来!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1.前言

最近在Q群内发现有个小伙伴提出了一个很有趣的脚本需求,想要实现“通过选择器获取到了控件,然后截图这个控件范围”,根据我们的Airtest的局部截图接口以及poco控件的属性查询接口是可以很快实现的~

2.接口查找

首先我们需要知道我们应该怎么实现用脚本去进行局部截图,我们可以通过翻阅Airtest的API文档发现,Airtest提供了 crop_image(img, rect) 方法可以帮助我们实现局部截图,在我们往期的推文里也介绍过该接口:

Airtest结合Poco对控件实施精准截图,学起来!

观察接口需要传入的参数是需要截图范围的左上角以及右下角坐标,那我们可以先识别控件,打开poco点击识别控件发现控件有很多属性,仔细观察发现,我们需要使用到的是pos(控件位置中心坐标)以及size(控件大小范围),通过计算即可得出截图范围的左上角以及右下角坐标啦。
Airtest结合Poco对控件实施精准截图,学起来!

那我们应该如何获取控件的这两个数值呢,我们可以查看poco的API文档,翻阅一下发现,poco还有获取控件该参数的接口,这下就可以轻而易举地得到所需的数据啦~

Airtest结合Poco对控件实施精准截图,学起来!

得到数据之后就是结合以上接口的传输数据来看,我们只需要计算得到控件的左上角坐标以及右下角的坐标后即可裁出我们想要的图片了

3.代码演示

Airtest结合Poco对控件实施精准截图,学起来!

__author__ = "AirtestProject"
from airtest.core.api import *
from airtest.aircv import *

auto_setup(__file__)

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

#获取屏幕分辨率
android = device()
xy=android.get_current_resolution()

screen = G.DEVICE.snapshot()

#使用poco去寻找控件
if poco(text="游戏增强器").exists():
    a=poco(text="游戏增强器").get_position()#获取控件的中心坐标
    b=poco(text="游戏增强器").get_size()#获取控件的实际长宽
    
    #计算左上角坐标,转化成绝对坐标
    x1=int((a[0]-0.5*b[0])*xy[0])
    y1=int((a[1]-0.5*b[1])*xy[1])
    
    #计算右下角坐标,转化成绝对坐标
    x2=int((a[0]+0.5*b[0])*xy[0])
    y2=int((a[1]+0.5*b[1])*xy[1])
    
    # 局部截图
    screen = aircv.crop_image(screen,(x1,y1,x2,y2))
    # 保存局部截图到log文件夹中
    try_log_screen(screen)

4.小结

通过代码需求,我们可以先将需求拆分后逐个击破,找到所需接口后就可以进行拼接使用啦,AirtestIDE也是集成了Python的代码环境,可以正常使用python的基础语法的~如果自己有更多的第三方库进行编写脚本的话,也是可以通过该方法使用自己的本地python环境运行我们的脚本。https://airtest.doc.io.netease.com/IDEdocs/3.4run_script/0_run_script/#4

希望大家也可以通过Airtest与Poco的组合实现更多有趣的自动化脚本,同时我们十分欢迎大家将自己编写的自动化脚本砸向我们~


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

官方答疑 Q 群:117973773文章来源地址https://www.toymoban.com/news/detail-746853.html

到了这里,关于Airtest结合Poco对控件实施精准截图,学起来!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stable diffusion AI精准绘图——ControlNet控件的安装与使用

    上两期图文教程,我们分享了stable diffusion webUI AI绘图的安装步骤,以及stable diffusion webUI 汉化插件的安装,与相关stable diffusion webUI 的相关参数解析,本期我们就介绍一下controlNet 控件的安装与使用。 首先说一下,stable diffusion webUI 相关的软件已经更新,安装完成后,会提示p

    2024年02月02日
    浏览(40)
  • ClickHouse 与 Amazon S3 结合?一起来探索其中奥秘

    目录 ClickHouse 简介 ClickHouse 与对象存储 ClickHouse 与 S3 结合的三种方法 示例参考架构 小结 参考资料 ClickHouse 简介 ClickHouse 是一种快速的、开源的、用于联机分析(OLAP)的列式数据库管理系统(DBMS),由俄罗斯的Yandex公司开发,于2016年开源。ClickHouse 作为交互式分析领域的后

    2024年02月10日
    浏览(26)
  • 如何在 Elasticsearch 中将矢量搜索与过滤结合起来 - Python 8.x

    大型语言模型(LLM)每天都在发展,这种情况有助于语义搜索的扩展。 LLM 擅长分析文本和揭示语义相似性。 这种情况也反映在搜索引擎上,因为语义搜索引擎可以为用户提供更满意的结果。 尽管大型语言模型可以捕获语义上接近的结果,但在搜索结果中实施过滤器对于增强

    2024年02月12日
    浏览(30)
  • 如何在 Elasticsearch 中将向量搜索与过滤结合起来 - Python 8.x

    大型语言模型(LLM)每天都在发展,这种情况有助于语义搜索的扩展。 LLM 擅长分析文本和揭示语义相似性。 这种情况也反映在搜索引擎上,因为语义搜索引擎可以为用户提供更满意的结果。 尽管大型语言模型可以捕获语义上接近的结果,但在搜索结果中实施过滤器对于增强

    2024年02月09日
    浏览(26)
  • 从物联网到AI智能,详解如何将物联网和AI技术结合起来

    作者:禅与计算机程序设计艺术 物联网(IoT)与人工智能(AI)相互促进、协同,推动着产业的前进。物联网的应用已经越来越广泛,比如自动化生产线,智能门禁系统等;而AI在物联网领域也取得了很大的发展,机器学习、深度学习方法被用在物联网数据分析、决策与预测上,实

    2024年02月07日
    浏览(35)
  • 如果把ChatGPT和“挖呀挖”的黄老师结合起来,她可以为你做什么事情?

    ChatGPT曾经2个月用户过亿的事情已成为过去,虽然我也成为了其中的一份子,感受着他的无所不能,但从中也的确发现了他的 一些不能做的事情 。而近期爆火的“挖呀挖”的黄老师,几天粉丝疯涨几百万,也的确 值得我们思考 。 那么今天狗哥就思考一下,如果吧ChatGPT和这

    2024年02月03日
    浏览(42)
  • 微软D365 入门文章汇总以及各项认证介绍(持续跟新.....) 自定义Dynamics 365实施和发布业务解决方案 (9章)

    希望入门D365的同学们,需要具备的知识点,涉及C#,WebApi,前端知识,Power Platform等知识,以及Azure的知识点等,需要有了解。 实施Microsoft Dynamics 365 CE-1. Dynamics 365 CE简介,提供了有关Dynamics 365客户参与度的基本详细信息_Martin-Mei的博客-CSDN博客 实施Microsoft Dynamics 365 CE-2. 实施

    2024年02月09日
    浏览(36)
  • Element UI-Select选择器结合树形控件

    Element UI中Select选择器的下拉选项是普通的列表,但是有些情况下,需要提供下拉菜单,这时就需要结合Select选择器和树形控件Tree了,其代码如下 最终效果如下所示: 小结: 需要提供一个隐藏的option标签: el-option :key=\\\"form.id\\\" :value=\\\"form.id\\\" :label=\\\"form.label\\\" hidden/ 当点击节点后,

    2024年02月11日
    浏览(32)
  • 结合底层源码介绍ConcurrentHashMap如何保证线程安全,佬会爱上这篇文章嘛

    前言: 本篇文章主要讲解 结合底层源码介绍ConcurrentHashMap如何保证线程安全 的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了😁 以下正文开

    2024年02月11日
    浏览(33)
  • 【图文结合c++】一篇文章解析c++默认函数规则,带你深度学习构造函数

    前言 : 类和对象 是面向对象语言的重要概念。 c++身为一门 既面向过程,又面向对象 的语言。 想要学习c++, 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的解析。 目录 类和对象的基本概念 封装 类域和类体 访问限定符 private public protec

    2024年03月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包