python+uiautomation【应用程序自动化】

本文详细介绍了一个由中国开发者编写的UIAutomation开源框架,该框架支持多种界面包括MFC, WindowsForms, WPF, Metro和Qt。文章深入讲解了如何利用此框架进行自动化测试,包括查找和操作各种界面元素的方法,如窗口、编辑框、菜单、下拉框和按钮等。同时,提供了使用示例和常见操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要用到一个uiautomation的开源框架,是一个咱们中国人写的,支持MFC,Windows Forms,WPF,Metro,Qt界面;此文主要是自己的个人总结,开源作者原文:http://www.cnblogs.com/Yinkaisheng/p/3444132.html

    此自动化的主要思想是利用此框架抓取到程序的各种句柄,然后对句柄执行各种操作。

一、uiautomation方法

1、WindowContrl(searchDepth,ClassName,SubName) 查找窗口中的程序,如果有中文则需用Unicode;可用window.Exists(maxSearchSeconds)来判断此窗口是否存在;

2、EditControl(searchFromControl) 查找编辑位置,找到后可用DoubleClick()来改变电脑的focus;edit.SetValue(“string”)输入值;

3、Win32API.SendKeys(“string”) 如果已在编辑位置,则可用此方法来输入值,{Ctrl}为ctrl键,其他类似;{@ 8}格式可输入8个@,对于数字也可实现此功能,但对于字母不能…;

4、MenuItemControl(searchFromControl,Name) 查找菜单按钮;

5、ComboBoxControl(searchFromControl,AutomationI) 查找下拉框,然后在此基础上用Select(“name”)方法来选择需要的选项;

6、BottonControl(searchFromControl,Name,SubName) 查找按钮;

7、automation.FindControl(firefoxWindow,

                       lambda c:(isinstance(c, automation.EditControl) or isinstance(c, automation.ComboBoxControl)) and c.Name == 'Enter your search term'

                       ) 按条件搜索handle

二、对找到句柄常用操作

Click() 点击;

RighClik() 右键点击;

SendKeys() 发送字符;

SetValue() 传值,一般对EditControl用;

三、对windows程序常用操作

subprocess.Popen(‘Name’)   用进程打开程序;

window.Close()         关闭窗口;

window.SetActive()     使用;

window.SetTopMost()     设置为顶层

window.ShowWindow(uiautomation.ShowWindow.Maximize) 窗口最大化

window.CaptureToImage(‘Notepad.png’) 截图;

uiautomation.Win32API.PressKey(uiautomation.Keys.VK_CONTROL) 按住Ctrl键

uiautomation.Win32API.ReleaseKey(uiautomation.Keys.VK_CONTROL) 释放Ctrl键

automation.GetConsoleWindow() #return console window that runs python,打开控制台

automation.Logger.ColorfulWriteLine(’\nI will open <Color=Green>Notepad and <Color=Yellow>automate it. Please wait for a while.’) 控制台传值(彩色字体),普通传值用WriteLine;

automation.ShowDesktop() 显示桌面;

四、句柄的抓取

直接运行automation模块枚举窗口时,支持下列参数(从doc窗口运行automation.py程序 ):

-t intValue 延迟枚举时间,单位秒

-r 从树的根部枚举,如果不指定,从当前窗口枚举

-d intValue 枚举控件树的的深度,如果不指定,枚举整个树

-f 从焦点控件枚举,如果不指定,从当前窗口枚举

-c 从光标下的控件枚举,如果不指定,从当前窗口枚举

-a 获取光标下控件及其所有父控件

-n 显示控件的完整Name, 如果不指定,只显示前30个字符

-m 显示控件更多属性,默认只显示控件的四个属性

示例:

automation.pyc –t3, 3秒后枚举当前窗口所有控件

automation.pyc –d2 –t3, 3秒后枚举当前窗口前三层控件

automation.pyc –r –d1 –t0 -n, 0秒后从根部枚举前两层控件,并显示控件完整名称

automation.pyc –c –t3, 3秒后显示鼠标光标下面的控件信息

Python结合UI Automation库(如Windows UI Automation或AutoIt)可以用于自动化Windows应用程序操作,例如在Windows上模拟鼠标点击、键盘输入等,以实现微信好友添加的功能。以下是基本步骤: 1. 安装必要的库:首先需要安装`pywinauto`库,它是一个用于控制Windows GUI应用的工具,可以方便地访问和操作Windows元素。 ```bash pip install pywinauto ``` 2. 导入并初始化:创建一个新的Python脚本,导入所需的模块,并设置目标窗口(微信聊天窗口或联系人列表)。 ```python from pywinauto.application import Application app = Application().start('weixin.exe') # 根据实际路径替换为微信的启动程序 ``` 3. 查找元素:定位到添加好友相关的按钮或菜单项。这通常涉及到查找特定的控件名称、文本、属性值或坐标位置。 ```python friends_button = app['FriendPanel'].ControlById('AddFriendButton') # 这里假设有个Add Friend的按钮ID ``` 4. 执行动作:模拟用户交互,比如点击添加好友按钮。 ```python friends_button.click() # 点击添加按钮 ``` 5. 输入好友信息:如果添加好友需要输入用户名或验证,可以找到相应的输入框进行填充。 ```python friend_input = app['SearchFriendEdit'] # 假设搜索栏的编辑框名是SearchFriendEdit friend_input.type_keys('朋友昵称') # 输入好友名字 ``` 6. 提交表单:确认添加,可能会有确认弹窗,此时需要处理这类事件。 请注意,实际操作可能因微信版本的不同而有所变化,某些功能可能被隐藏或者加密保护。此外,频繁的自动化操作可能违反微信的服务条款,因此在使用前务必确保了解相关规定。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值