聊聊 Python 自动化截图的一些经验
Airtest 使用的图像识别算法
SURFMatching
、 TemplateMatching
和 BRISKMatching
这三种算法来进行图像识别 TemplateMatching
属于 模板匹配算法 SURFMatching
和 BRISKMatching
则属于 特征点匹配方法 程序如何根据算法结果判定是否找到匹配的截图
截取图标时尽量不要截入过多的背景内容
打开应用尽量使用 start_app 而不是截图脚本
start_app()
支持 Android 和 iOS 设备,相对用截图脚本来启动应用,脚本会更加简洁,兼容性也会更好: # 打开网易云音乐
start_app("com.netease.cloudmusic")
用 image editor 查看截图识别结果的可信度
snapshot+recognition
按钮,即可查看截图在当前页面的识别情况,包含识别出来的位置以及识别结果的可信度: 巧用 target_pos 点击截图的不同位置
target_pos
target_pos=5
。对于一张截图来说,总共有 9 个 target_pos
,当我们把截图的 target_pos
设置成不同的值时,脚本会点击在截图不同的位置上: target_pos
的值: target_pos
这个参数: touch(Template(r"tpl1598948415043.png", target_pos=6, record_pos=(-0.434, -0.773), resolution=(900, 1600)))
target_pos=5
的位置上: target_pos=6
的位置上: 巧用坐标进行点击/滑动
巧用 keyevent("BACK") 替代返回的截图脚本
keyevent("BACK")
来替代这个返回的截图语句,更加稳定高效: 录制功能虽好用,但也要注意截图的兼容性
画面切换的时候,可以多使用 wait 或者 sleep,再进行点击操作
sleep(1.0)
来缓冲下,减少画面切换对连续点击操作的影响。 合理调整阙值
threshold=0.8
参数: touch(Template(r"tpl1598952570968.png", threshold=0.8, record_pos=(-0.021, 0.121), resolution=(900.0, 1600.0)))
threshold
: from airtest.core.setting import Settings as ST
ST.THRESHOLD = 0.7 # 其他语句的默认阈值
threshold
,最终也是不会生效的。因为断言语句的阙值与其它截图语句的阙值是不一样的,它只能通过下述方式进行设置: from airtest.core.setting import Settings as ST
ST.THRESHOLD_STRICT = 0.7
用自定义语句(例如截图列表)
picList = [pic1,pic2,pic3] # 截图的图片对象列表
for pic in picList:
pos = exists(pic)
if pos:
touch(pos)
break # 只要找到图片列表中的任何一张图片,就执行touch
可以用 poco 语句代替截图脚本
本文分享自微信公众号 - AirPython(AirPython)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
技术分享 | MySQL 使用 MariaDB 审计插件
作者:姚远 专注于 Oracle、MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6 ,5.7,8.0 OCP。现在鼎甲科技任顾问,为同事和客户提高数据库培训和技术支持服务。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 背景 Oracle 的 MySQL 社区版不带审计插件(Audit Plugin),要想使用审计功能,你可以用企业版,不过这需要银子。业界还有一些 GPL 协议的审计插件,这里我们选择 MariaDB 的审计插件。 一、迁移并安装 MariaDB 的 10.1 版本对应与 Oracle 的 MySQL 5.7,我们到它的官网上下载 Linux 的通用版本,下载下来解压大约 1.3G: # ll -h mariadb-10.1.46-linux-x86_64.tar -rw-rw-r-- 1 scutech scutech 1.3G Aug 19 18:19 mariadb-10.1.46-linux-x86_64.tar 我们找到需要的审计插件: ./mariadb-10.1.46...
- 下一篇
【万字长文】深入理解 Typescript 高级用法
点击上方“前端技术砖家”关注 ❝ 「前言」:这里的标题看起来是 "高级用法",不少同学可能就表示被劝退了。其实 Typescript 作为一门 强类型 编程语言,最具特色的就是他的类型表达能力,这是很多完备的后端语言都难以媲美的 说的很对,但PHP是最好的语言,所以如果你搞懂了他的类型系统,对将来的日常开发一定是大有裨益的,但过于灵活的类型系统也注定了 Typescript 无法成为一门纯粹的静态语言,不过每一行代码都有代码提示他不香嘛? ❞ 大纲 基础准备 Typescript 类型系统简述 Typescript 的类型是支持定义 "函数定义" 的 Typescript 的类型是支持 "条件判断" 的 Typescript 的类型是支持 "数据结构" 的 Typescript 的类型是支持 "作用域" 的 Typescript 的类型是支持 "递归" 的 小结 "高级用法" 的使用场景与价值 哪些用法可以被称为 "高级用法" 举例说明 "高级用法" 的使用场景 小结 类型推导与泛型操作符 流动的类型(类型编写思路) Typescript 代码哲学 常见类型推导实现逻辑梳理 类型的传递...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7设置SWAP分区,小内存服务器的救世主
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19