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 库的使用的功能非常多多,可以解决那些在
桌面软件实现一些自动化办公或者自动化测试人员和朋友。