python+UIAutomation简介

本文深入讲解了UIAutomation,微软提供的UI自动化库,介绍其体系结构、自动化流程及关键属性。展示了如何使用AutomationElement类和PropertyCondition类进行UI元素的查找与操作。

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

1、简介

UIAutomation微软提供的UI自动化库,主要用AutomationElement类来表示UI 自动化目录树中的一个UI自动化元素,.NET Windows的窗体应用程序和WPF应用程序

2、体系

这里写图片描述

  • 在服务端由UIAutomationProvider.dll和UIAutomationTypes.dll提供
  • 在客户端由UIAutomationClient.dll和UIAutomationTypes.dll提供
  • UIAutomationCore.dll为UI自动化的核心部分,负责Server端和Client端的交互
  • UIAUtomationClientSideProvides.dll为客户端程序提供自动化支持

3、UI自动化流程

项目中一定要添加引用:
这里写图片描述
使用UISpy查看控件属性值
这里写图片描述

Process p = Process.Start(@"C:\Windows\system32\calc.exe");//启动应用程序
Thread.Sleep(2000);

AutomationElement desktop = AutomationElement.RootElement;//获取RootElement

AutomationElement calcframe = desktop.FindFirst(TreeScope.Descendants | TreeScope.Children,
    new PropertyCondition(AutomationElement.NameProperty, "计算器"));//获取应用程序

AutomationElement sevenbtn = calcframe.FindFirst(TreeScope.Descendants | TreeScope.Children,
    new PropertyCondition(AutomationElement.NameProperty, "7"));//获取控件

InvokePattern ivkp = (InvokePattern)sevenbtn.GetCurrentPattern(InvokePattern.Pattern);
ivkp.Invoke(); //触发控件事件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

执行效果:
这里写图片描述

注:PropertyCondition类是用来对相关属性进行条件匹配,在控件树中查找控件时,可以通过最佳匹配来找到相应的控件

4、UIAutomation重要属性

AutomationIdProperty:通过AutomationId来查找AutomationElement
NameProperty:通过控件的Name属性来查找AutomationElement
ControlType:通过控件的类型来查找AutomationElement
AutomationId: 唯一地标识自动化元素,将其与同级相区分
Name: WPF 按钮的Content 属性、Win32 按钮的Caption 属性以及 HTML 图像的ALT 属性都映射到 UI 自动化视图中的同一个属性Name

5、TreeScope

Element:指定搜索包括元素本身。
Children:指定搜索包括元素的直接子级。
Descendants:指定搜索包括元素的子代(包括子级)。
Parent:指定搜索包括元素的父级。不支持。
Ancestors:指定搜索包括元素的上级
Subtree:指定搜索包括搜索的根和全部子代。
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. 提交表单:确认添加,可能会有确认弹窗,此时需要处理这类事件。 请注意,实际操作可能因微信版本的不同而有所变化,某些功能可能被隐藏或者加密保护。此外,频繁的自动化操作可能违反微信的服务条款,因此在使用前务必确保了解相关规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值