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

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


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

1.前言

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

2.接口查找

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

image.png

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

image.png

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

image.png

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

3.代码演示

image.png

__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的组合实现更多有趣的自动化脚本,同时我们十分欢迎大家将自己编写的自动化脚本砸向我们~

相关文章
|
7月前
|
Android开发 iOS开发 Windows
Airtest:各平台的剪切板功能汇总
Airtest:各平台的剪切板功能汇总
|
7月前
|
测试技术 Python
如何正确使用Airtest报告插件?报告小tips上线
如何正确使用Airtest报告插件?报告小tips上线
167 0
|
6月前
|
数据采集 JavaScript 前端开发
详尽分享网站网页中加入各种分享按钮功能百度分享
详尽分享网站网页中加入各种分享按钮功能百度分享
131 0
|
7月前
|
测试技术 Python
App自动化测试中,如何更好地处理弹窗?
在App自动化测试中,处理弹窗异常是保证测试稳定性和可靠性的重要环节。当遇到广告弹窗、升级提示等不定时出现的UI元素时,可以采用黑名单处理方法,如上述Python代码示例,通过尝试点击黑名单中的元素来避免干扰。同时,利用异常处理装饰器可以增强函数功能,保持代码整洁,当异常发生时记录日志、截图并保存页面源代码,便于问题排查。这两种策略能有效提升测试的效率和质量。
|
iOS开发
iOS 常用阅读软件打开书籍的转场动画
iOS 常用阅读软件打开书籍的转场动画
102 0
|
7月前
|
XML 监控 Java
Android App开发之事件交互Event中检测软键盘和物理按键讲解及实战(附源码 演示简单易懂)
Android App开发之事件交互Event中检测软键盘和物理按键讲解及实战(附源码 演示简单易懂)
764 0
|
Web App开发 缓存 JavaScript
待补充 | ​Chrome调试工具常用功能整理
待补充 | ​Chrome调试工具常用功能整理
106 0
|
IDE 开发工具 Android开发
Airtest 新版来袭!揭秘 Airtest1.1.6 和 AirtestIDE1.2.6 的详细更新内容
Airtest 新版来袭!揭秘 Airtest1.1.6 和 AirtestIDE1.2.6 的详细更新内容
289 0
|
XML 存储 开发工具
Appium自动化(6) - 控件定位工具之uiautomatorviewer 的详细介绍
Appium自动化(6) - 控件定位工具之uiautomatorviewer 的详细介绍
280 0
Appium自动化(6) - 控件定位工具之uiautomatorviewer 的详细介绍

热门文章

最新文章