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

此文章来源于项目官方公众号:"AirtestProject"

版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1.前言

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

2.接口查找

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

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

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

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

3.代码演示

python 复制代码
__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环境运行我们的脚本。airtest.doc.io.netease.com/IDEdocs/3.4...

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


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

官方答疑 Q 群:117973773

相关推荐
SRC_BLUE_1732 分钟前
SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
android·网络安全·adb·less
小牛itbull3 小时前
ReactPress:构建高效、灵活、可扩展的开源发布平台
react.js·开源·reactpress
IT规划师3 小时前
开源 - Ideal库 - 常用枚举扩展方法(一)
开源·c#·.net core·ideal库·枚举转换
无尽的大道4 小时前
Android打包流程图
android
OpenI启智社区4 小时前
共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕
人工智能·开源·ccf中国开源大会·大湾区
AI服务老曹4 小时前
建立更及时、更有效的安全生产优化提升策略的智慧油站开源了
大数据·人工智能·物联网·开源·音视频
镭封5 小时前
android studio 配置过程
android·ide·android studio
夜雨星辰4875 小时前
Android Studio 学习——整体框架和概念
android·学习·android studio
邹阿涛涛涛涛涛涛5 小时前
月之暗面招 Android 开发,大家快来投简历呀
android·人工智能·aigc
IAM四十二6 小时前
Jetpack Compose State 你用对了吗?
android·android jetpack·composer