适用于winform程序的UI自动化实现(python+uiautomation)

article/2025/10/15 4:22:03

适用于winform程序的UI自动化实现(python+uiautomation)

一、使用的工具和库

定位工具:inspect(提取码:kvwx)、UISpy(提取码:ab0e)
python库使用:subprocess(内置库,用于打开应用程序)uiautomation(pip install uiautomation安装)

二、原理

使用subprocess库打开应用程序,然后借助定位工具采集定位应用元素的信息,然后在定位到的元素上进行输入、点击、获取等一系列操作(通过uiautomation的方法实现)。
【定位属性一般使用:ClassName、Name、ProcessId、AutomationId】

三、定位工具的使用

简单使用,先打开需要定位的应用程序,然后打开定位工具,就可以找到当前工具的窗口信息
UISpy:
在这里插入图片描述
1、如果找不到自己的应用窗口/窗口失效。则可以先选中根目录然后点击刷新,此时会重新抓取所有的窗口
2、日常定位窗口中详细信息,可以选中鼠标操作,然后按住Ctrl此时窗口自动定位的内容就是鼠标左键的定位元素(部分情况会存在定位不到的,需要在应用窗口下一点点寻找)
在这里插入图片描述

四、代码实现

# 打开计算器进程[应用程序所在的路径]
subprocess.Popen('calc.exe')
time.sleep(2)
# 定位窗口
wc = uiautomation.WindowControl(searchDepth=1, Name='计算器')
# 设置为顶层【一般默认都是前置的可以不用设置】
wc.SetTopmost(True)
# 执行操作
wc.ButtonControl(Name='7').Click()
wc.ButtonControl(Name='加').Click()
wc.ButtonControl(Name='5').Click()
wc.ButtonControl(Name='等于').Click()
# 检查
result = wc.TextControl(AutomationId='CalculatorResults')
assert result == '12'

五、常用的uiautomation操作

		uiautomation常见的操作有:Click()            点击;RighClik()       右键点击;DoubleClick()	双击SendKeys()     发送字符;SetValue()      传值,一般对EditControl用;

window窗口操作

		subprocess.Popen('Name')    用进程打开程序;window.Close()            关闭窗口;window.SetActive()           使用;window.SetTopMost()       设置为顶层window.ShowWindow(uiautomation.ShowWindow.Maximize)  窗口最大化window.CaptureToImage('Notepad.png')  截图;

六、常用的uiautomation控件方法

按钮:uiautomation.ButtonControl(‘定位元素=value’)
输入框:uiautomation.EditControl(‘定位元素=value’)
单选框:uiautomation.RadioButtonControl(‘定位元素=value’)
复选框:uiautomation.CheckBoxControl(‘定位元素=value’)
下拉框:uiautomation.ComboBoxControl(‘定位元素=value’)
文本:uiautomation.TextControl(‘定位元素=value’)
表格:uiautomation.TabControl(‘定位元素=value’)
uiautomation.TableControl(‘定位元素=value’)

七、PO模式结合
实现方式:页面元素、页面 操作、用例、数据分层存储,实现多重调用
公共方法:打开应用程序、登陆
objectpage
objectoperation
testcase
testdata


http://chatgpt.dhexx.cn/article/sptopGU2.shtml

相关文章

WPF UIAutomation测试套件开发

目录 介绍 目标 测试方案 功能测试(黑匣子) 测试示例 设计 记录测试并生成测试方法 更新测试方法并构建 测试用例规范 测试方法 初始化方法 实现自定义TestContext 测试配置 关于CodedUI的常见问题 不要手动更改* .Designer.cs文件中的代…

安卓手机 Python 自动化( uiautomation、uiautomation2、weditor )

其他自动化工具或者框架: Airtest:https://airtest.readthedocs.io/zh_CN/latest/autojs:Auto.js快速入门实战教程:https://zhuanlan.zhihu.com/p/90065914appium:https://blog.csdn.net/freeking101/article/details/…

UIAutomation识别UI元素

MS UI Automation(Microsoft User Interface Automation:UIA)是随.net framework3.0一起发布的,虽然在如今这个几乎每天都有各种新名词、新技术出来的所谓的21世纪,它显得已经有些过时了。前些日子,正好一个项目,可以用…

uiautomation实现自动化

1.下载UI SPY 下载地址:https://download.csdn.net/download/yangzhichao_csdn/85389759 2.CMD指令导入uiautomation库 pip install uiautomation 3.打开计算器,然后打开UISpy 如图ControlType为”ControlType.Window” 那么捕获窗口就用:uiautomation.WindowCo…

Python uiautomation初探,测试Win10计算器

在网上找 Python 客户端自动化测试的库,一般有 pywinauto、pywin32、pyautogui、uiautomation。本文仅对 uiautomation 做简单的了解。 MS UI Automation 是 MSAA 技术的一个替代品:即让控件和应用程序具有更好的可达性(accessible&#xff…

UIAutomation 自动化

Introduction UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active Accessibility。UI Automation在某些方面超过了MSAA,UI自动化提供了Windows Vista中,微软…

Python UI自动化 编程(一) UIAutomation

Python UI自动化 编程 第一章 Python UI自动化 编程入门之打开文件夹双击文件 文章目录 Python UI自动化 编程前言一、什么是Python UI自动化 编程二、环境说明1、Python环境:Python 3.82、IDE: Pycharm3、使用的库:UIAutomation 三、使用步…

【python】UI自动化-uiautomation

UI自动化-uiautomation 0- 前言1- inspect2- uiautomation3- 【实战】RustDesk软件自动 安装、指定服务器信息4- 参考文章 0- 前言 做应用程序自动点击的记录,暂不完整,仅供参考。参考多位大佬文章,链接在后面涉及工具 inspect【应用程序元素…

CAD 双击实体事件

CAD本身为我们提供的双击事件的设置。工具-工作空间-自定义...打开用户自定界面 窗体内找到双击动作。在双击动作下我们可以看到CAD自带的所有实体 例如我们在双击三维实体时自定义一个事件。那么我们就选中三维实体-快捷特性。在右侧特性里编辑宏内容。以下是系统彼带的宏$M$(…

深入探索透视投影变换(续)

-潘宏 -2009.4.14 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教 -email: popyynetease.com -B站专栏: https://b23.tv/oWsl6PD 在上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视…

凯文·凯利:AI将改变一切设计工作

每一项新技术诞生之初都会引发新一轮科技恐慌周期,近期大火的AI生成艺术更是如此。连线杂志创始主编、知名科技思想家凯文凯利(Kevin Kelly)在6个月重度使用之后认为,这次AI进展的确是一次令人震惊的突破。但是,它不会…

鼠标双击退出应用程序简单实现

文章目录 Android 简单模拟鼠标双击退出应用程序,利用Toast提示“再点一次退出”使用Toast鼠标单击提示信息鼠标双击实现退出系统 Android 简单模拟鼠标双击退出应用程序,利用Toast提示“再点一次退出” 使用Toast // 参数:当前上下文环境&…

如何用JavaScript完美地区分双击和单击事件

通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 1.可以点击拖动,然后吸附在窗口边缘2.点击悬浮球,可以跳转界面,或者更改悬浮球的形态准备 1.移…

单机显示、双击隐藏;事件绑定、单击div、双击div、删除事件;元素显示、隐藏、交替; 向上收缩、向下展开、交替;淡入淡出

单机显示、双击隐藏 <style>div {width: 500px;height: 200px;background-color: green;display: none;} </style> <body><button id"btn">单击显示&#xff0c;双击隐藏</button><br><br><div> </div&…

干货分享 | UE游戏鼠标双击判定

UE虚幻引擎对于游戏开发者来说都不陌生&#xff0c;市面上有47%主机游戏使用虚幻引擎开发游戏。作为是一款游戏的核心动力&#xff0c;它的功能十分完善&#xff0c;囊括了场景制作、灯光渲染、动作镜头、粒子特效、材质蓝图等。本文介绍了虚幻引擎游戏开发过程中游戏鼠标双击判…

鼠标单击变双击问题

解决此问题可以从硬件和软件两方面思考角度入手:我们先把鼠标插在别人的机器上使用,如果没发现问题可能是软件问题,若发现同样的问题则可能是硬件方面的问题。 软件方面:(1)病毒导致将杀毒软件病毒库更新至最新版,全盘扫描。 (2)鼠标属性设置不当我们打开控制面板-&…

鼠标双击事件

随时随地阅读更多技术实战干货&#xff0c;获取项目源码、学习资料&#xff0c;请关注源代码社区公众号(ydmsq666) java中没有给出鼠标双击事件&#xff0c;虽然可以通过事件源e.getClickCount()2来判断鼠标点击次数&#xff0c;但是执行双击事件的同时也执行了单击事件&#x…

关于双击与单击事件冲突解决方案

有时候会要需求要求&#xff0c;比如附件&#xff0c;单击查看详情&#xff0c;双击下载文件时遇到的双击单击事件同时绑定一个节点。 比如单击click&#xff0c;dlbclick同时绑定时&#xff0c;双击会同时触发&#xff0c;而且click会触发两次。单用click来处理双击单击同时存…

TRUE PARTNER迎来戴维斯双击,资产规模业绩双增长

配图来自Canva可画 2020年可谓是黑天鹅乱舞的一年&#xff0c;新冠疫情肆虐全球&#xff1b;原油危机引发的资本市场动荡&#xff1b;地缘政治冲突以及美国大选&#xff0c;市场处于时不时来一波的上蹿下跳的状态当中。 在资本市场波动加剧的大环境中&#xff0c;有这样一家奇…

慧择业务布局成效明显,戴维斯双击可期

“没有一个冬天不会过去&#xff0c;没有一个春天不会到来”。 过去的一年&#xff0c;美股市场波折不断&#xff0c;尤其是2020年3月份的4次熔断&#xff0c;让股神巴菲特都惊呼“活久见”。 过去的一年&#xff0c;美股市场惊喜不断&#xff0c;道琼斯指数更是在2020年11月创…