桌面软件/exe程序软件自动化大宝剑--lackey之初识

news/2024/9/22 16:44:24/文章来源:https://www.cnblogs.com/chevron123/p/18383831

  C/S架构端下的软件在IT发展长河中,渐渐的在大多数从业者已经淡忘。现有的PC端上的软件

也是在极力的前浪推后浪,更新替代一些老派的语言追寻潮流。

  互联网的软件开发就是IOT,HTTPclient ,鲜有 exe的桌面软件;某也喜欢追新潮学互联网技

术,自动化就接触APP WEB API并使用网上生态资源完成一些项目产出。做这行业还从未想到过

C/S产品软件是否能做自动化,然而好巧也碰到了这个需求。心中一直认为这样的产品就是传统行

业才有的,也真是某眼界小了也是某是对这种行业产品的不清晰认知造成的,就感觉有点老古董的

feeling。

  这是第二次接触C端exe软件产品,回往过去第一次接触这种传统软件,就觉得当时某在工作

种的plan , think , action ,result 的尴尬和迷失。

  做过互联网自动化的同学都知道,基于UI层测试自动化的重要点在于 Element 和 Assert的部

分,而操作类的东西都会有对应的框架库去支持。从了解这类产品软件开始第一想法是,优先套用

网上的一些资源CSDN ,博客园,GitHub 翻找,Airtest首当其冲的先尝试起来。

  失望最大就是这款工具,启动起来后连主程序都没有捕捉到。

  自动捕捉桌面顶层窗口去获取程序

  这种也不顶用,本身没有与程序建立连接。去截图form登录控件让其运行,也是无法运行的。

百度一些信息,确有其他人遇到相同问题,也是没有解决办法。

  好吧 ,接下就是pywinauto、pywingui 利器下场使用,其源信息也是非常多的,某

认为这种真的在无其他办法只有硬敲代码了。

pyautogui 工具

  一个纯 Python 的 GUI 自动化库,它可以模拟键盘输入、鼠标点击和移动、在屏幕上查找图

像等操作,比较适合一些简易办公操作。

  想要了解更多使用可以百度,也可以看源码学习使用。所以某认为这个不是优先实践,也是

最后无赖的选择。就是利用界面坐标,图像识别去实现。

pywinauto工具

  主要用户就是Windows GUI 应用程序的测试和自动化

  那么回到自动化的重点 element定位 和 object 断言,网上资源提供这两款inspect.exe

SpyLite.exe 工具去捕捉元素属性。本身Pywinauto 也是可以根据 主窗口获取分支元素,做到一

部分控件,窗口的定位元素支持。附上一个demo图

 

app = Application(backend="uia").connect(process=5624) #使用spy++检擦工具捕捉到主窗口的title
console_dlg = app.window(title ="DRConsole")# console_dlg.print_control_identifiers() # 打印 主窗口所有信息

reg = console_dlg.child_window(title="frmRegister") #子窗口标题

通过pywinauto 打印找到的元素输入框 Edit 属性reg.Edit4.type_inpu(text) #输入文本

  在软件界面中不是所有的控件和窗口有唯一性元素或者能被捕捉到,此时就会很麻烦头疼。

就如下图所示

   另外就是spy++工具捕捉到控件与窗口,窗口没有title 或者窗口class_name属性值不唯一,

控件class_name 属性值不一样,剩下情况就是啥也捕捉不到。进行到此时,只有坐标轴定位

显示器屏幕左上角(0,0)界面方式推动到控件中心位置得出坐标。此法确实很low 也着实非

常尴尬。

  最近看到某位同事得压力测试脚本,发现这个强大的库--lackey 。去百度翻找了一下CSDN

博客园对此库理解和运用,奈何竟然白票到有用的东西,只能看源码了。

附上地址:https://gitcode.com/gh_mirrors/la/lackey/analysis

 1 --》此处便是源代码

APP -- 同理pywinauto 连接启动app 获取窗口应用属性

Geometry -- 封装屏幕,界面定位,焦点,操作,收集等方法

inputEmulation -- 鼠标,键盘封装 同理 pywinauto ,pyautogui

Ocr -- 从Image 识别到 对象,查找到image存在 ,Matches 匹配

platformManagerWindows --  屏幕,窗口活跃操作实例封装,应用在Windows上的

ReginMatching  ---  对区域,图案封装的一个工具,细分方法 (也是元素定位重点)

SIkuliGui  -- 对会话,弹窗的操作封装 

TemplateMatchers   --  引用OpenCV 模板算法  ,去找匹配工具

 

2 --》此处便是TEST 测试验证脚本

--Test 就是在验证论证自己封装写好的工具类和方法,外加一些识别图像的算法验证

  当前在使用Lackey 库后,根据需要找到比较合适的截图控件就好,应该它是经过一系列处理

找屏幕位置,找区域,找图案,计算像素,匹配计算值比较,然后才是后面元素Action.

成果不上视频了,涉及商业用途。后序关于Lackey 库的使用的功能非常多多,可以解决那些在

桌面软件实现一些自动化办公或者自动化测试人员和朋友。

  

 

 

 

 

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/788319.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全网最适合入门的面向对象编程教程:40 Python常用复合数据类型-枚举和enum模块的使用

在 Python 中,枚举(Enumeration, Enum)是一种复合数据类型,用于表示一组相关但不同的常量值。枚举类型允许我们使用人类可读的名称代替代码中的魔法数字或字符串,Python 提供了 enum 模块来实现枚举类型。全网最适合入门的面向对象编程教程:40 Python 常用复合数据类型-…

rn node 版本问题

报错信息:Command PhaseScriptExecution failed with a nonzero exit codeFailed to construct transformer: Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:79:19)at Object.createHash (node:crypto:139:10)at sta…

替代BeyondCompare,四款免费文件代码对比工具分享

Beyond Compare是一套内容比较工具软件。除了可以作文件比较以外,还可以比对文件目录、FTP目录及压缩包案的内容等,但是由于要收费且比较贵,很多公司也在规避工作电脑使用非授权软件的风险,所以分享四款平替Beyond Compare的文件代码对比软件工具。1、WinMerge WinMerge是一…

替代BeyondCompare,免费四款文件代码对比工具分享

Beyond Compare是一套内容比较工具软件。除了可以作文件比较以外,还可以比对文件目录、FTP目录及压缩包案的内容等,但是由于要收费且比较贵,很多公司也在规避工作电脑使用非授权软件的风险,所以分享四款平替Beyond Compare的文件代码对比软件工具。1、WinMerge WinMerge是一…

markdown格式测试

Editor.md hhh换行TEST 1 2 3 a bq d HEAD TEST Smart Test ...--目录 (Table of Contents) [TOCM] 目录Editor.md换行TESTHEAD TESTSmart TestHeading 1Heading 2Heading 3Heading 4Heading 5Heading 6Heading 1 link Heading linkHeading 2 link Heading linkHeading 3 link …

一图速览9种API接口测试

一图速览9种API接口测试,大家都懂了吗?值得收藏!

Serilog文档翻译系列(一) - 入门指南

保持优质文档是 Serilog 的优先事项。如果你发现文档中有缺失或不准确的内容,或者希望通过添加主题或教程来扩展 wiki,请通过问题追踪系统告知我们。 为什么选择Serilog? 与许多其他 .NET 库一样,Serilog 提供了基本的诊断日志记录功能,支持文件、控制台等多种方式。它易于…

数据分析1

数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律数据分析三剑客:Numpy,Pandas,MatplotlibNumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。一、…

CSS调试 (1)

https://www.bilibili.com/video/BV1KM4y1G7EF/内容转自【浏览器调试工具精讲】Chrome Dev Tools精讲,前端必看! 橙色:外边距 蓝色:本体。 绿色:内边距。CTRL+ F 可以搜索 输入某一个string 或者 css,section#someid xpath: //section/p 编辑样式

多线程四-Lock锁及其原理分析

JUC是什么 可能有些不太关注底层代码,会不太理解juc是啥,比如之前的我,只知道是跟并发相关。juc其实就是并发包路径的缩写,java.util.concurrent.而Lock是其中锁的接口,有比如重入锁,读锁,写锁等一些具体实现。 这部分源码理解起来还是有些难度,暂时先理解其大概思路,…

Dijkstras algorithm All In One

Dijkstras algorithm All In One 迪杰斯特拉算法Dijkstras algorithm All In One迪杰斯特拉算法Dijkstra Dijkstras algorithm (/ˈdaɪkstrəz/ DYKE-strəz) is an algorithm for finding the shortest paths between nodes in a weighted graph, which may represent, for e…

Datawhale X 李宏毅苹果书AI夏令营 Task1打卡

3.1 局部极小值与鞍点 3.1.1 临界点及其分类参数对于损失函数的微分为零时,就无法进一步优化了,训练即停止了。所以我们把这些梯度为零的点统称为临界点 。 临界点可以分为两类:极值点 (局部极小值)和 鞍点 。 鞍点就是指那些梯度为零但不是局部极小值或者局部极大值的点,…