当前位置: 首页 > news >正文

【Pywinauto库】8.3 pywinauto.findwindows 模块

概述

pywinauto.findwindows 提供用于迭代和查找窗口/元素的函数,是 pywinauto 的核心查找功能模块。

异常类

ElementAmbiguousError

当有不止一个元素匹配时抛出的异常。

ElementNotFoundError

当找不到元素时抛出的异常。

WindowAmbiguousError

当不止一个窗口匹配时抛出的异常。

WindowNotFoundError

当找不到窗口时抛出的异常。

主要函数

enum_windows()

返回所有顶级窗口的句柄列表。

示例:

from pywinauto.findwindows import enum_windowsall_windows = enum_windows()
print(f"找到 {len(all_windows)} 个顶级窗口")
find_element(**kwargs)

调用 find_elements 并确保只返回一个元素。

特点:

  • 使用与 find_elements 完全相同的参数
  • 如果找到多个匹配元素,抛出 ElementAmbiguousError
  • 如果找不到匹配元素,抛出 ElementNotFoundError

示例:

from pywinauto.findwindows import find_element# 查找特定的记事本窗口
notepad_window = find_element(title="无标题 - 记事本", class_name="Notepad")
find_elements(**kwargs)

根据传入的标准查找元素。

警告: 不建议直接使用此功能!这是一个非常低级的API。更好的方式是使用"入门指南"中描述的 ApplicationWindowSpecification 对象。

参数:

参数描述默认值
class_name具有此窗口类的元素None
class_name_re类与此正则表达式匹配的元素None
parent元素是此的子元素None
process在此过程中运行的元素None
title有这个文字的元素None
title_re文本与此正则表达式匹配的元素None
top_level_only仅限顶级元素True
visible_only仅可见元素True
enabled_only仅启用元素False
best_match标题与此类似的元素None
handle要返回的元素的句柄None
ctrl_index要返回的子元素的索引None
found_index要返回的已过滤子元素的索引None
predicate_func用户为自定义元素验证提供的钩子函数None
active_only仅限活动元素False
control_id具有此控件ID的元素None
control_type具有此控件类型的元素(字符串,用于UIAutomation元素)None
auto_id具有此自动化ID的元素(用于UIAutomation元素)None
framework_id具有此框架ID的元素(用于UIAutomation元素)None
backend搜索时使用的后端名称None
depth搜索深度None

示例:

from pywinauto.findwindows import find_elements# 查找所有可见的记事本窗口
notepad_windows = find_elements(class_name="Notepad", visible_only=True)# 使用正则表达式查找标题包含"记事本"的窗口
notepad_like_windows = find_elements(title_re=".*记事本.*")# 查找特定进程的窗口
specific_process_windows = find_elements(process=1234)
find_window(**kwargs)

调用 find_elements 并确保只返回一个元素的句柄。

特点:

  • 使用与 find_elements 完全相同的参数
  • 返回单个窗口句柄而不是元素对象

示例:

from pywinauto.findwindows import find_window# 查找记事本窗口句柄
notepad_handle = find_window(title="无标题 - 记事本", class_name="Notepad")
find_windows(**kwargs)

根据传入的条件查找元素并返回其句柄列表。

特点:

  • 使用与 find_elements 完全相同的参数
  • 返回窗口句柄列表而不是元素对象列表

示例:

from pywinauto.findwindows import find_windows# 查找所有记事本窗口句柄
notepad_handles = find_windows(class_name="Notepad")

使用示例

基本查找示例
from pywinauto.findwindows import find_elements, find_element# 查找所有可见的顶级窗口
all_visible_windows = find_elements(visible_only=True, top_level_only=True)# 精确查找特定窗口
specific_window = find_element(title="计算器", class_name="ApplicationFrameWindow")
使用正则表达式
from pywinauto.findwindows import find_elements# 使用正则表达式匹配标题
chrome_windows = find_elements(title_re=".*Chrome.*")# 使用正则表达式匹配类名
button_controls = find_elements(class_name_re=".*Button.*")
处理异常
from pywinauto.findwindows import find_element, ElementNotFoundError, ElementAmbiguousErrortry:window = find_element(title="不存在的窗口")
except ElementNotFoundError:print("找不到指定的窗口")
except ElementAmbiguousError:print("找到多个匹配的窗口,请使用更精确的条件")
使用自定义谓词函数
from pywinauto.findwindows import find_elementsdef custom_filter(element):# 自定义过滤逻辑return element.visible and element.enabled and hasattr(element, 'specific_property')# 使用自定义过滤函数
filtered_elements = find_elements(predicate_func=custom_filter)

注意事项

  1. 性能考虑: find_elements 是相对低级的API,频繁调用可能影响性能
  2. 推荐用法: 建议使用高级的 ApplicationWindowSpecification 接口
  3. 错误处理: 总是准备好处理可能抛出的异常
  4. 参数组合: 可以组合多个参数来精确查找目标元素
  5. 后端兼容: 注意不同后端(win32/uia)可能支持不同的参数

文章转载自:

http://RHiUcdDI.pcwzb.cn
http://6tfB6QAF.pcwzb.cn
http://p2LkDOMH.pcwzb.cn
http://dqfVV4DB.pcwzb.cn
http://85pCDZfs.pcwzb.cn
http://OarD6rfu.pcwzb.cn
http://aFVsdsPD.pcwzb.cn
http://AnNSLU3Q.pcwzb.cn
http://9DqQVswf.pcwzb.cn
http://eEkpgF1G.pcwzb.cn
http://YA7uOZES.pcwzb.cn
http://7TY1TtQ4.pcwzb.cn
http://flv3jMpF.pcwzb.cn
http://sZmL8Q7p.pcwzb.cn
http://rRC18dSu.pcwzb.cn
http://6nhAky0P.pcwzb.cn
http://aKHqRwcP.pcwzb.cn
http://GqrqR2D2.pcwzb.cn
http://hrktUQkK.pcwzb.cn
http://V0Z7TE3i.pcwzb.cn
http://u2IqVB80.pcwzb.cn
http://5ghdWJUd.pcwzb.cn
http://Wh8ZCLVT.pcwzb.cn
http://o9jBCb8l.pcwzb.cn
http://55mbVKNu.pcwzb.cn
http://dzbCgji4.pcwzb.cn
http://u01mSHad.pcwzb.cn
http://t8zjaweV.pcwzb.cn
http://TlDbqSlW.pcwzb.cn
http://E0oUNUj8.pcwzb.cn
http://www.dtcms.com/a/375524.html

相关文章:

  • 351章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • 禅道,用域名访问之后不能登录的问题
  • Lodash-es 完整开发指南:ES模块化JavaScript工具库实战教程
  • 实践《数字图像处理》之图像方向性自适应阈值处理
  • 【Linux】系统部分——信号的概念和产生
  • android定制系统完全解除应用安装限制
  • 第2节-过滤表中的行-BETWEEN
  • OpenLayers数据源集成 -- 章节三:矢量要素图层详解
  • 基于AI Agent的智能决策支持系统正在逐步取代传统规则驱动的DSS
  • License 集成 Spring Gateway:解决 WebFlux 非阻塞与 Spring MVC Servlet 阻塞兼容问题
  • spark连接mongodb
  • ubuntu新增磁盘扩展LV卷
  • PowerApps 使用Xrm.Navigation.navigateTo无法打开CustomPage的问题
  • C/C++中基本数据类型在32位/64位系统下的大小
  • TensorFlow 和 PyTorch两大深度学习框架训练数据,并协作一个电商推荐系统
  • ceph scrub 参数
  • JavaWeb--day1--HTMLCSS
  • 全国连锁贸易公司数字化管理软件-优德普SAP零售行业解决方案
  • C++面向对象之继承
  • AI原生编程:智能系统自动扩展术
  • Wireshark TS | 接收数据超出接收窗口
  • 第一代:嵌入式本地状态(Flink 1.x)
  • 4.1-中间件之Redis
  • Django ModelForm:快速构建数据库表单
  • 【迭代】:本地高性能c++对话系统e2e_voice
  • SSE与Websocket、Http的关系
  • 蓓韵安禧DHA展现温和配方的藻油与鱼油营养特色
  • 基于UNet的视网膜血管分割系统
  • python函数和面向对象
  • 嵌入式 - ARM(3)从基础调用到 C / 汇编互调