首页 > 其他分享 >Airtest结合Poco对控件实施精准截图,学起来!

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

时间:2023-11-23 10:59:48浏览次数:38  
标签:控件 截图 Poco airtest poco 坐标 Airtest

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

1.前言

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

2.接口查找

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

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

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

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

3.代码演示

__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

标签:控件,截图,Poco,airtest,poco,坐标,Airtest
From: https://www.cnblogs.com/AirtestProject/p/17851060.html

相关文章

  • QT实战 之TableWidget控件
    QT实战之TableWidget控件指定列数setColumnCount(3)指定表头setHorizontalHeaderLabels(QStringList)指定行数setRowCount(5)设置每个单元格的内容setItem(int行数,int列数,*QTableWidgetItem内容)#include "tablewidget.h"#include "ui_tablewidget.h" TableWidge......
  • QT实战 之自定义控件(QSpinBox+QSlider)
    QT实战之自定义控件(QSpinBox+QSlider)创建自定义控件(QT设计师界面类)打开ui文件,拖拽需要用到的基础控件(QSpinBox+QSlider)事件绑定(注意QSpinBox::valueChanged有重载,需要用函数指针指定信号函数)使用自定义控件(拖拽添加Widget容器控件,右键菜单--提升为,打开提升对话框,填写提升的......
  • C#在ListView中使用按钮、输入框、进度条等控件
    usingJues.CustomListItemView;usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;usingstaticSystem.Windows.Forms.ListViewItem;namespaceDemo{publicpartialclassForm1:Form{privateCustomControlcustomC......
  • GUI--JFrame学习01(基本控件)
    [Java进阶]Swing两万字大总结一(超详细教程,这不得收藏一波)_swing教程_程序喵正在路上的博客-CSDN博客1.创建第一个JFrame窗体packagelearn;importjavax.swing.*;importjava.awt.*;publicclassMyFrame01extendsJFrame{publicvoidCreateJFrame(Stringtitl......
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)
    DevExpressWPFDiagram(流程图)控件帮助用户完美复制MicrosoftVisioUI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着......
  • Teamcenter AWC开发,如果要使用原生的HTML下拉框控件的坑
    1、如果要在AWC原生的弹出框中<aw-popup2>,加入下拉框<selectname="fruit"><optionvalue="apple">Apple</option><optionvalue="banana">Banana</option><optionvalue="orange">Orange</......
  • wpf 任意控件绑定Command
    <BorderBackground="White" BorderBrush="Gray" BorderThickness="1" CornerRadius="2"> <Border.InputBindings> <MouseBindingCommand="{BindingDataContext.BorderCommand,RelativeSource={RelativeS......
  • vs2022安装dev控件工具箱不显示
    我的vs版本是2022的,然后第一次安装dev控件我下的是20.2版本的。安装完了之后工具箱中一直没有显示dev相关控件。然后我尝试过修复,还是没有达到目的。试过网上的办法“ToolboxCreator.exe/ini:toolboxcreator.ini”,还是没用。我以为版本太新了,然后我网上找了个15.2的安装。安装完......
  • WPF --- 如何重写WPF原生控件样式
    引言上一篇中WPF---重写DataGrid样式,因新产品UI需要,重写了一下微软WPF原生的DataGrid的样式,包含如下内容:基础设置,一些基本背景色,字体颜色等。滚动条样式。实现圆角表格,重写表格的一些基础样式,例如CellStyle,RowStyle,RowHeaderStyle,ColumnHeaderStyle等。重写过......
  • Airtest:各平台的剪切板功能汇总
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途1.前言一直以来,大家都还挺关注Airtest是否有剪切板功能的。从Airtest1.3.1版本起,我们新增了Android、iOS设备的剪切板功能,自此,3大平台的剪切板功能就齐全啦。......