Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用python实现桌面自动化

用python实现桌面自动化

作者头像
赵云龙龙
发布于 2021-11-16 06:40:38
发布于 2021-11-16 06:40:38
1.7K00
代码可运行
举报
文章被收录于专栏:python爱好部落python爱好部落
运行总次数:0
代码可运行

好久没写文章了。主要是最近换了工作。工作太忙,闹心的事情也很多的。自己还在熟悉新的环境,新的业务。

好消息是,可能会有更多,更不一样的沉淀分享出来。像Go, docker,k8s,人工智能,高可用,海量数据,国产化,全链路压测,安全测试等等,当然还得沉淀沉淀,请耐心等待。

坏消息是,可能更新的频率说不准了。

先简单说说现在的工作,刚过试用期,头三个月还是蛮难受的,主要是管理有些混乱,团队有些人躺平,要驱动这些人干活,比较难受,然后线上问题太多,感觉自己就是一个客服和传达指令,以及跑腿的。还好内心够强大,一切都挺过来了。

现在公司主要是做平台的,都是做企业级的客户,很牛叉的客户太多,财神爷不好得罪,自己学习总结的时间有限,大部分时间被内耗和琐事牵扯了。

这边我要负责桌面的团队。感觉这边团队自动化就是0.

UI的确是也不是很好做,特别是兼容这些平台。

好了,废话不多说,最近发现微软的一个桌面测试框架,uiautomation, 跟uiautomator就差一点,有种似曾相识的感觉。

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install uiautomation

程序启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
subprocess.Popen(args='D:\Release\Higemi.exe',cwd=r"D:\Release")

窗口定位

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cas = automation.WindowControl(searchDepth=1, AutomationId='myMainWindow', Name='Login')

控件定位

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
login=cas.ButtonControl(AutomationId ="btn_login")

鼠标动作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
automation.Win32API.MouseClick(600,250)
automation.Win32API.MouseWheelDown(2)

如果要定位元素,可以用以下命令。或者用Inspector,Spy++等windows工具,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#在超时时间内寻找指定的窗口或控件,找不到则抛出异常
automation.WaitForExist(cas, 3) 

automation.py –t3, 3 秒后遍历当前窗口所有控件
automation.py –d2 –t3, 3 秒后遍历当前窗口前三层控件
automation.py –r –d1 –t0 -n, 0 秒后遍历 root 的第一层子控件,并显示控件完整名称
automation.py –c –t3, 3 秒后遍历鼠标光标下面的控件信息
automation.py –c –t3 -d-23 秒后遍历鼠标光标下面的控件向上两层的父控件

并且自带控件查看工具,比 Windows 自带的 Inspector.exe 更加好用: 运行 CMD,输入 automation.py -t3 回车,然后 3 秒内切换到应用界面。

感觉找的元素,定位的元素也是有限的。

可以用如下方式来操作控制元素。

如果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root(Name='Desktop', Depth=0)
  window1(Depth=1)
    control1-001(Depth=2)
    control1-...(Depth=2)
    ...
    control1-100(Depth=2)
  window2(Name='window2', Depth=1)
    control2-1(Depth=2)
      control2-1-001(Depth=3)
      control2-1-...(Depth=3)
      ...
      control2-1-100(Depth=3)
    control2-2(Depth=2)
    control2-3(Depth=2)
    control2-4(Name='2-4', Depth=2)
      editcontrol(Name='myedit1', Depth=3)
      editcontrol(Name='myedit2', Depth=3)

如果你想查在 'hi'里ditControl 找名为 'myedit2' , 代码可以这么写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uiautomation.EditControl(searchDepth=3, Name='myedit2').SendKeys('hi')

如果前面有200个controls,这样查找的性能就相当慢。 这样写就性能好一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window2 = uiautomation.WindowControl(searchDepth=1, Name='window2') # search 2 times
sub = window2.Control(searchDepth=1, Name='2-4')    # search 4 times
edit = sub.EditControl(searchDepth=1, Name='myedit2')   # search 2 times
edit.SendKeys('hi')

你也可以组合起来写。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uiautomation.WindowControl(searchDepth=1, Name='window2').Control(searchDepth=1, Name='2-4').Edi

总体用下来,马马虎虎。很多元素定位不到,或者窗口定位不到。

但是也有好处,像右键,像某些控件,可以定位到,比别的工具好用,所以我打算结合pyautogui, winappdriver. 这样各取所长,就能达到我的目的了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python粉丝团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Python+uiautomation的windowsGUI自动化测试概述
一直使用Python做自动化测试,近期遇到了要对桌面端软件即windowsGUI进行自动化测试。Python的GUI自动化测试工具有很多,但是都有不同的侧重点。本次会详细说明为啥选择uiautomation来做测试。
虫无涯
2023/02/02
4K0
windows GUI自动化怎么做
最近在搞SAP的自动化。因为公司没考虑预算,不能用RPA。 首先用SAP自带的录制工具,不太行,各种弹框没法处理。 思来想去,打算用python来整。先用tracker来录制,创建业务流程还好,但是一旦要处理弹框,上传附件,就有点吃力了。 然后用了python的一些库来对付。 pyperclip 剪切板 pymouse 鼠標操作 pykeyboard 鍵盤曹祖 win32com win32gui pyautogui pywinauto uiautomation pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制等等。 pythoncom是pywin32库的一部分,运行脚本后,即可通过键盘的上下左右键控制鼠标移动了 pyhook 監聽輸入操作 pynput这个库让你可以控制和监控输入设备 这些库各有千秋,让我分別道来。
赵云龙龙
2022/12/01
2.4K0
pywinauto桌面应用自动化入门篇
本案例因为start方法无法启动应用程序,所以我这里使用了os.system去启动的应用程序
懿曲折扇情
2022/10/28
6.1K0
pywinauto桌面应用自动化入门篇
UI自动化 --- 微软UI Automation
无论是接口自动化测试,还是UI自动化测试,目的就是为了提高产品的稳定性,保证用户体验。
Niuery Diary
2023/10/22
1.3K0
UI自动化 --- 微软UI Automation
【UI自动化-3】UI自动化元素操作专题
在熟悉了元素定位之后,我们接下来就要学习对定位到的元素进行操作这项内容了。我简要做了个总结,如下图:
云深i不知处
2020/09/16
3K0
Pywinauto之Windows UI 自动化1
前言,公司要搭建自动化测试环境,涉及到对设备软件的烧录操作,在网上找了些资料,发现pywinauto这个python库,能很好的支持PC端跑自动化,为此,记录下学习过程
用户6367961
2019/09/29
8.8K1
Pywinauto之Windows UI 自动化1
windows 桌面GUI自动化-4. pywinauto 操作窗口控件child_window()
也可以通过print_ctrl_ids()方法 (另外一个print_control_identifiers() 功能一样)查看当前窗口下的控件
上海-悠悠
2023/08/25
2.6K0
windows 桌面GUI自动化-4. pywinauto 操作窗口控件child_window()
UI自动化 --- UI Automation 基础详解
上一篇文章UI自动化 --- 微软UI Automation中,介绍了UI Automation能够做什么,且借助 Inspect.exe 工具完成了一个模拟点击操作的Demo,文章结尾也提出了自己的一些想法,想要借助UI Automation做一个UI自动化测试平台。想法毕竟是想法,还是得落地实践,一步一步来。
Niuery Diary
2023/10/22
4.7K0
UI自动化 --- UI Automation 基础详解
Python结合Pywinauto 进行 Windows UI 自动化
https://blog.csdn.net/z_johnny/article/details/52778064
墨文
2020/02/28
5.1K0
工作7年,一位已婚妹子UI自动化测试学习心得
大家好,我是罗春南,来自海南,工作7年,已是一位3岁孩子妈妈的,90后妹子(已婚,仍可撩
测试开发技术
2020/08/21
7080
工作7年,一位已婚妹子UI自动化测试学习心得
FlaUI:.NET 自动化测试 Windows 应用的强大工具
FlaUI 是一个基于微软 UIAutomation 技术的 .NET 库,主要用于对 Windows 应用程序(如 Win32、WinForms、WPF 等)进行自动化 UI 测试。它提供了强大的元素查找和交互功能,支持多种框架,并且易于使用和定制。内部采用异步调用以提高效率,社区也非常活跃。
郑子铭
2025/03/10
2260
FlaUI:.NET 自动化测试 Windows 应用的强大工具
自动化-Selenium 3-常用API(Java版)
Actions类提供的鼠标事件常用方法(perform()执行所有Actions中存储的行为):
wangmcn
2022/07/22
1.2K0
自动化-Selenium 3-常用API(Java版)
「 自动化测试 」面试题..
自动化框架主要的核心框架就是分层+PO模式:分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。然后再加上日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成模式组成。
测试小兵
2024/05/11
2660
「 自动化测试 」面试题..
Java自动化测试(特殊元素处理 26)
针对不是 input 类型的元素,我们可以使用第三方的自动化工具,比如:Auto,对 windows 控件元素进行操作
zx钟
2020/09/14
6700
基于UIAutomation+Python+Unittest+Beautifulreport的WindowsGUI自动化测试框架common目录解析
注: 1、本文为本站首发,他用请联系作者并注明出处,谢谢! 2、源码解析/common目录 ---- 1 框架工具说明 工具 说明 使用Unittest框架 开源自动化测试框架,直接使用 批量或指定用例运行 Unittest框架可支持此功能 log日志 使用Python的logging库即可 生成HTML测试报告 使用BeautifulReport模块可实现此功能 用例设计和结果分离 PO模式 用户登录封装 直接把登录功能模块化,使用Unittest框架中的setup,teardown即可 定制测试报告模板
虫无涯
2023/02/17
9140
浅谈window桌面GUI技术及图像渲染性能测试实践
从Windows Vista之后,desktop composition的部分就由Desktop Window Manager完成了(当然是启用Aero的情况下,Windows 8起DWM是必须开启的)
高楼Zee
2019/07/17
4K0
浅谈window桌面GUI技术及图像渲染性能测试实践
WEB界面测试实践之Selenium WebDriver
工作中需要对web界面进行测试,在网上找了找解决方案,最终找到了Selenium WebDriver。 WebDriver简介 The primary new feature in Selenium 2.0 is the integration of the WebDriver API. WebDriver is designed to provide a simpler, more concise programming interface in addition to addressing some
jeremyxu
2018/05/10
3.9K0
Java自动化测试(webdriver常用API 24)
缺点:设置是针对全局的,在WebDriver实例整个生命周期有效,但并不是所有的元素都需要等待
zx钟
2020/09/04
7100
如何让 WPF 程序更好地适配 UI 自动化
Windows 中很早就内置了 UI 自动化机制(UIAutomation 从 Windows XP SP3 就开始提供了),WPF 第一个版本开始也提供了 UI 自动化的支持。所以按道理说如果你使用了 WPF,那么你的 UI 做准备好了随时可被自动化的准备。
walterlv
2023/10/23
6980
Appium Python API 中文
2. current_context current_context(self):
py3study
2020/01/09
3.8K0
相关推荐
基于Python+uiautomation的windowsGUI自动化测试概述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验