ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python+airtest来做UI自动化

2022-05-18 15:33:08  阅读:164  来源: 互联网

标签:视频 截图 python poco UI 坐标 airtest android


首先推荐一个学习airtest工具比较好的网站https://poco.readthedocs.io/en/latest/source/README.html  它是主要教poco的 ,非常强大,包含普通的app、游戏类app

 

 

1.问题来源

 

在游戏类app中,常常那些时装类资源检查时,是需要人物先穿上这个物品,然后进行旋转 来检查材质、是否穿模、显示等等,当大量的物品需要检查时,操作起来就非常繁琐,而且还容易弄错。

这时候通过游戏中的命令,来自动穿衣服。(已有)可以找开发来进行开发相关命令。

 

而利用python 来可以实现 自动化执行命令,并且旋转、并且录制视频

 

 

2.定位方式

 

(1)图像识别的方式 在airtest中点击touch 然后鼠标滑动进行截图。就会生成如下一串代码。

touch(Template(r"tpl1652843878534.png", record_pos=(0.362, -0.224), resolution=(2160, 1080)))  

 

(2)有时候我们并不像通过图像识别,而是想通过坐标来执行

在airtest中可以通过上述的 代码来print 这个坐标 具体写法如下:

这样就可以得到这个坐标了

print(touch(Template(r"tpl1652843878534.png", record_pos=(0.362, -0.224))))

而点击坐标是通过poco来执行的

from poco.drivers.android.uiautomation import *
from airtest.core.api import *

poco = AndroidUiautomationPoco()

poco(坐标).click()

(3)通过poco辅助窗口 来获取控件的绝对位置,找到你需要的位置,然后右键 复制即可 就可以得到一个代码

例如:
poco("android.widget.FrameLayout").offspring("android.widget.EditText").set_text(f"{ids}") 

通过 上述获得这个位置的绝对位置,然后set_text() 进行输入内容

以上是常用的三种定位方法。但是大部分都是使用的图像识别。但是为了代码执行率较高,可以采用多种方式并行的方式,哪个靠谱用哪个



 

 

 

 

 

 

3.截图和录制视频了

搞定了定位方式,那就是自己拼接代码执行逻辑了。然后进行截图和录制视频

截图是采用的工具自带的snapshot这个方法  后面接文件路径和名称,msg就是描述

snapshot(filename=f'image/screen/物品{i}.png', msg="截图验证")


录制视频
from airtest.core.android.adb import ADB
from airtest.core.android.recorder import Recorder
adb = ADB(serialno="ee8f76e8") #连接手机 手机的设备id
recorder = Recorder(adb)
recorder.start_recording(max_time=60) #视频的时间

recorder.stop_recording(output=f"image/video/outer{i}.mp4")  # 文件命名为物品id

以上就是截图和录制视频了


4.关于滑动:

其实滑动文章开头里面的poco里面教程已经写的很清楚了,有兴趣的可以看看

这里只说一个方法,在进行滑动时,可以先利用airtest的工具 先点击swipe 然后进行截图开始的点,然后点击结束的点 这样就会生成一串代码

利用获取坐标的方式将开始的点这个图 获取到坐标,然后改为
swipe([633, 273], vector=[0.14, 0.0116])  #绝对坐标 +vector的方式 这样就不需要这个图了

airtest好用 YYDS

 

标签:视频,截图,python,poco,UI,坐标,airtest,android
来源: https://www.cnblogs.com/testling/p/16284869.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有