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

pywinauto:Windows桌面应用自动化测试(十)

前言

上一篇文章地址:

pywinauto:Windows桌面应用自动化测试(九)-CSDN博客

下一篇文章地址:

暂无

一、查找属性总结

通过查看源码与官方文档,我们发现方法window、child_window、children的参数都依赖于非常低级的 API,即find_elements方法,因此,我们只要将find_elements的参数与inspect查找到的属性对应起来,就可以根据inspect查找到的属性快速定位元素,如下表所示:

find_elements 参数inspect 获取的属性说明
class_nameClassName匹配控件的类名,使用类名精确匹配控件类型。如果 ClassName 是空值,表示没有匹配到类名。
class_name_reClassName使用正则表达式匹配控件的类名。
parentAncestors, Parent控件的父控件,通过 ParentAncestors 属性来指定父窗口或控件。
processProcessId控件所属的进程 ID,通过 ProcessId 属性匹配。
titleName, LegacyIAccessible.Name控件或窗口的标题或文本内容,精确匹配。
title_reName, LegacyIAccessible.Name使用正则表达式匹配控件的标题或文本内容。
top_level_only是否为顶层窗口是否只查找顶层控件,True 为只查找顶层控件,False 包括嵌套子控件。
visible_onlyIsOffscreen控件的可见性,True 表示只查找可见控件 (IsOffscreen=False)。
enabled_onlyIsEnabled控件的启用状态,True 表示只查找启用的控件。
best_matchName, LegacyIAccessible.Name查找名称与指定字符串相似的控件,允许模糊匹配。
handlehwnd控件的唯一句柄,通过 hwnd 来精确匹配控件。
ctrl_indexGridItem.Row, GridItem.Column指定控件在父控件中的索引或网格位置。
found_index索引 (在界面上查找的顺序)在查找到的控件集合中,通过索引获取特定控件。
predicate_func自定义属性自定义的函数,用于自定义过滤控件。
active_onlyIsActive (未在此属性中体现)只查找当前活动的控件。
control_idControlId, AutomationId控件的唯一 ID,通过 ControlIdAutomationId 来唯一匹配控件。
control_typeControlType, LocalizedControlType控件的类型,如 ButtonEdit 等。
auto_idAutomationId控件的自动化 ID,通过 AutomationId 唯一匹配控件。
framework_idFrameworkId控件所属的框架 ID,如 Win32Chrome 等。
backend与自动化后端相关指定使用的自动化后端,如 "win32""uia"
depth控件层次深度控件的层次深度,用于控制查找的递归层级。

在使用 Pywinauto 进行元素定位时,不同属性有不同的简易程度和精确度。以下是对常见属性的优先级排序,基于简易程度、精确度和常见用例进行考虑:

属性优先级简易程度精确度备注
best_match1基于控件的最佳匹配,最常用,适合简单界面中的大部分场景,易于理解和使用。
handle2最高通过唯一的窗口句柄定位,适合需要唯一标识控件的情况,精确度最高,但不易获取,需要更多的准备工作。
control_id3通过控件的唯一 ID 定位,常用于 Win32 应用中,适合唯一标识的控件,精确度很高,但前提是知道控件的 ID。
class_name4中高通过控件类名定位,简易程度高,适合同类型控件较多的情况,如所有按钮都有相同类名。精确度取决于控件的唯一性,适合大范围初步筛选。
title/name5使用控件的文本或标题进行定位,适合大部分窗口标题、按钮等带有文本的控件。对文本敏感,适合标识唯一控件。
auto_id6使用 UIAutomation 自动生成的 ID,适合现代应用程序,但不是所有应用都支持,支持则精确度较高。
class_name_re7中高通过正则表达式匹配控件类名,灵活性强,适合需要匹配多个类名的场景。精确度和简易度依赖于正则表达式的复杂程度。
title_re8中高通过正则表达式匹配控件的标题或文本,适合标题变化不大但模式一致的场景。适合动态内容,简易度取决于正则表达式。
visible_only9仅搜索可见的控件,通常用于避免查找隐藏控件,简易程度高,但精确度不高,主要用于初步筛选。
enabled_only10仅搜索启用的控件,类似 visible_only,但用于筛选可操作的控件。通常与其他定位方法结合使用。
depth11中低中高限定搜索的控件深度,适用于控件层次复杂的 UI 界面,但需要明确层级结构,简易度低,适合高效筛选。
parent12限定控件的父级控件,适合在嵌套复杂的界面中定位元素。简易度低,使用时需要清楚控件的层次结构,适合在多层结构中准确定位。
process13限定属于特定进程的控件,适用于进程内多个窗口的定位,简易度低,通常用于精细化筛选。
predicate_func14用户自定义的筛选函数,灵活性和精确度高,但实现难度大,适合高级用户进行复杂控件筛选。

 


http://www.kler.cn/news/316863.html

相关文章:

  • 成都睿明智科技有限公司怎么样?
  • 【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
  • Shader 中的光源
  • 民主测评系统可以解决哪些问题?
  • Typescript进阶:解锁Infer类型的使用
  • C++笔记---set和map
  • NLP--自然语言处理学习-day1
  • 《微信小程序实战(3) · 推广海报制作》
  • 文件系统(软硬链接 动静态库 动态库加载的过程)
  • C++学习笔记(32)
  • 在C#中使用NPOI将表格中的数据导入excel中
  • 工业交换机如何保证数据的访问安全
  • SkyWalking 简介
  • 深入理解Go语言中的并发封闭与for-select循环模式
  • 使用脚本自动化管理外部Git仓库依赖
  • 如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查
  • MySQL面试题——第一篇
  • 人工智能不是人工“制”能
  • FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据
  • 寻呼机爆炸,炸醒通讯安全警惕心
  • 【操作系统强化】王道强化一轮笔记
  • k8s1.27.7部署higress,代理非k8s集群业务
  • 如何借助ChatGPT提升论文质量:实战指南
  • 真正能抵抗裁员的,从不是专业能力,早知道这些都财务自由了
  • JAVA_17
  • pSort
  • < 微积分Calculus >
  • 【自学笔记】支持向量机(3)——软间隔
  • MySQL--导入SQL文件(命令行导入)
  • 马尔科夫蒙特卡洛_吉布斯抽样算法(Markov Chain Monte Carlo(MCMC)_Gibbs Sampling)