PC端自动化测试实战教程-9-pywinauto操作应用程序窗口的级联菜单(详细教程)

1.简介

其实前边关于这一知识点也有涉及和提到过,只是当时没有说,不信宏哥提一下,你想一想之前宏哥介绍的记事本输入内容,然后操作记事本的文件->另存为,这里的另存为就是文件的级联菜单。今天宏哥就给小伙伴或者童鞋们来讲解和分享一下这个知识点。

2.什么是级联菜单?

2.1级联菜单的定义与特点‌

‌级联菜单‌(Cascade Menu)是一种‌多层级嵌套的菜单结构‌,通过逐级展开的方式呈现选项13。其核心特点包括:

  1. ‌层级结构‌

    • 主菜单项触发后展开子菜单,子菜单可继续延伸更深层级(如/* by 01022.hk - online tools website : 01022.hk/zh/formatcsql.html */ 文件->另存为->PDF格式
    • 通过符号/* by 01022.hk - online tools website : 01022.hk/zh/formatcsql.html */ ->表示层级路径(例如帮助->关于记事本
  2. ‌交互方式‌

    • 用户需逐级点击或悬停触发下一级菜单显示。
    • 在自动化操作中,需按层级路径精准定位控件(如menu_select("一级->二级->三级")
  3. ‌控件类型‌

    • 常见控件类型为MenuBar(菜单栏)、MenuItem(菜单项)和Menu(子菜单)
    • 通过child_window()方法可逐层定位到具体控件(例如先定位“编辑”再找“时间/日期”)
  4. ‌典型应用场景‌

    • 应用程序主菜单栏(如记事本的“文件”“编辑”“帮助”等)
    • 右键上下文菜单(如桌面右键菜单的“新建->文件夹”)
‌2.1与普通菜单的差异‌
‌特性‌‌级联菜单‌‌普通菜单‌
层级结构多级嵌套单层平铺
交互复杂度需逐级展开直接点击选项
典型控件类型MenuBar+MenuItemButtonListBox

3.操作方法

pywinauto提供了操作级联菜单的方法,使用menu_select()方法就可以操作级联菜单控件。

4.项目实战

因为宏哥的系统是Windows11,所以这里为了减少不必要的麻烦主要还是通过Windows安装的Notepad++编辑器进行演示和实践。这里宏哥介绍两种常见的定位级联菜单控件的方法。

4.1多级路径定位(menu_select()

1.这种用 ->分隔多级菜单项,适用于静态菜单。Notepad++编辑器:文件(F)->新建(N),然后新建一个标签页,如下图所示:

4.1.1代码设计

4.1.2参考代码
#-*- coding:utf-8 -*-#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行#2.注释:包括记录创建时间,创建人,项目名称。'''Created on 2025-04-25 @author: 北京-宏哥 北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!) Project: PC端自动化测试实战教程-9-pywinauto操作应用程序窗口的级联菜单(详细教程)'''#3.导入模块frompywinautoimportApplicationimporttime app= Application('uia').start("D:/software/Notepad/Notepad++/notepad++.exe") win= app.window(title='新文件 1 - Notepad++')#win.print_ctrl_ids()win.menu_select('文件(F) -> 新建(N)')
4.1.3运行代码

1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的动作(启动Notepad++编辑器,然后新建了一个Notepad++编辑器标签页【新文件2】)。如下图所示:

4.2逐层点击控件(动态菜单处理)

1.使用child_window()逐级定位。同样的操作不同的定位方法,Notepad++编辑器:文件(F)->新建(N),然后新建一个标签页,如下图所示:

2.按照前边宏哥讲解的方法,查看控件的结构树,宏哥这里为了让大家看清楚使用代码打印出来,然后找到文件(F),这就是我们要定位的,如下图所示:

4.1.1代码设计

4.1.2参考代码
#-*- coding:utf-8 -*-#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行#2.注释:包括记录创建时间,创建人,项目名称。'''Created on 2025-04-25 @author: 北京-宏哥 北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!) Project: PC端自动化测试实战教程-9-pywinauto操作应用程序窗口的级联菜单(详细教程)'''#3.导入模块frompywinautoimportApplicationimporttime app= Application('uia').start("D:/software/Notepad/Notepad++/notepad++.exe") win= app.window(title='新文件 1 - Notepad++')#win.print_ctrl_ids()#点击一级菜单并选择子项win.child_window(title="文件(F)", control_type="MenuItem")#操作动态加载的菜单win.menu_select('文件(F) -> 新建(N)')
4.1.3运行代码

1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的动作(启动otepad++编辑器:文件(F)->新建(N),然后新建一个标签页)。如下图所示:

5.小结

5.1注意事项‌
  1. ‌控件识别‌
    使用Inspect.exeAccessibility Insights工具确认菜单项的titlecontrol_type属性
  2. ‌延迟处理‌
    部分菜单加载需要时间,可通过time.sleep(0.5)wait()方法增加等待。
  3. ‌Backend选择‌
    传统 Win32 应用使用backend="win32",现代应用(如 WPF、UWP)使用backend="uia"

通过上述方法,可灵活实现多层级联菜单的自动化操作。实际应用中需结合控件属性调试,确保路径准确

好了,时间不早了今天就分享到这里,感谢你耐心地阅读!




感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角 “推荐” 按钮,您的将是我最大的写作动力!另外您也可以选择 【关注我】 ,可以很方便找到我!
本文版权归作者和博客园共有,来源网址: https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!

公众号(关注宏哥) 微信群(扫码进群) 客服微信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1182440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 下 YOLOv5 的 TensorRT 加速实战教程

往期文章 RK3588+docker+YOLOv5部署:https://blog.csdn.net/FJN110/article/details/149673049 RK3588测试NPU和RKNN函数包装https://blog.csdn.net/FJN110/article/details/149669753 RK3588刷机:https://blog.csdn.net/FJN110/article/details/149669404 以及深度学习部署工…

如何用自然语言控制实现多角度图像生成:Qwen-Edit-2509完全教程

如何用自然语言控制实现多角度图像生成:Qwen-Edit-2509完全教程 【免费下载链接】Qwen-Edit-2509-Multiple-angles 项目地址: https://ai.gitcode.com/hf_mirrors/dx8152/Qwen-Edit-2509-Multiple-angles 还在为单一角度的图片创作感到局限?阿里…

Kronos股票预测革命:从单只到千只的高效并行计算实战

Kronos股票预测革命:从单只到千只的高效并行计算实战 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 还在为大规模股票预测的系统瓶颈而烦恼吗…

YOLOv13 中的改良池化结构详解:SPPCSPC 与多尺度信息融合

SPPCSPC模块原理与实现详解 文章目录 SPPCSPC模块原理与实现详解 1. 引言与背景 1.1 空间金字塔池化的发展历程 1.2 CSP网络结构的核心思想 1.3 SPPCSPC的设计动机 2. SPPCSPC模块核心原理 2.1 模块整体架构 2.2 详细结构分析 2.3 前向传播过程 3. 关键技术细节 3.1 多尺度池化…

Minecraft种子破解技术深度解析:从数学原理到工程实现

Minecraft种子破解技术深度解析:从数学原理到工程实现 【免费下载链接】SeedCracker Fast, Automatic In-Game Seed Cracker for Minecraft. 项目地址: https://gitcode.com/gh_mirrors/se/SeedCracker 伪随机数生成器的逆向工程 Minecraft世界的生成依赖于…

终极解决方案:Compose Multiplatform在iOS平台的性能优化完整指南

终极解决方案:Compose Multiplatform在iOS平台的性能优化完整指南 【免费下载链接】compose-multiplatform JetBrains/compose-multiplatform: 是 JetBrains 开发的一个跨平台的 UI 工具库,基于 Kotlin 编写,可以用于开发跨平台的 Android&am…

YOLOv13 教程:改良空间金字塔池化与 BasicRFB 的多尺度特征解析

BasicRFB模块原理与实现详解 文章目录 BasicRFB模块原理与实现详解 1. 引言与背景 1.1 感受野的重要性 1.2 RFB模块的提出 2. BasicRFB模块设计原理 2.1 多尺度特征提取 2.2 扩张卷积的应用 2.3 特征融合策略 3. BasicRFB模块详细实现 3.1 模块结构设计 3.2 关键设计细节 3.3 优…

容器镜像加速技术:让国内开发者告别Docker拉取困境

容器镜像加速技术:让国内开发者告别Docker拉取困境 【免费下载链接】public-image-mirror 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。 项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror 在当今容器化技术飞速发…

Bias Tee 偏置三通接头

Bias Tee 偏置三通接头 引言 正文 实物图 Author: JiJi \textrm{Author: JiJi} Author: JiJi Created Time: 2026.01.19 \textrm{Created Time: 2026.01.19} Created Time: 2026.01.19

YOLOv13 教程:简化快速空间金字塔池化 SimSPPF 详解

SimSPPF SimConv(Simple Convolution)结构原理详解 文章目录 SimSPPF SimConv(Simple Convolution)结构原理详解 引言 SimConv的设计背景 传统卷积操作的挑战 组合式设计的必要性 SimConv的设计理念 SimConv的核心组件分析 1. 卷积层(Convolution Layer) 2. 批量归一化层…

基于yolov8的服饰检测识别系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪、图像检索、图像分割等其他项目可看我主页其他文章 功能演示(看 shi pin 简介): 基于yolov8的服饰检测识别系统,支持图像检测,也支持视频和摄像实时检测【pytorch框架、python…

YOLOv13 教程:PPM 空间金字塔池化与多尺度信息解析

文章目录 PPM(Pyramid Pooling Module)模块原理与实现详解 1. 引言与背景 1.1 语义分割中的挑战 1.2 全局上下文的重要性 1.3 设计动机 2. PPM模块核心原理 2.1 金字塔池化概念 2.2 自适应池化机制 2.3 特征融合策略 3. 代码实现详解 3.1 模块初始化 3.2 前向传播过程 3.3 设…

C盘里的软件怎么迁移到D盘其他盘,不重装且能正常使用?

theme: default themeName: 默认主题将软件从c盘移动到其他盘例如d盘可能看起来有点复杂,但为了释放主盘空间经常是必要的,你不必卸载并重新安装所有东西,本指南解释了安全移动程序的简单方法,我们将涵盖windows内置工具,第三方软件选项,以及为高级用户准备的手动步骤,目标是让…

COLMAP三维重建实战宝典:从新手到高手的自动化秘籍 [特殊字符]

COLMAP三维重建实战宝典:从新手到高手的自动化秘籍 🚀 【免费下载链接】colmap COLMAP - Structure-from-Motion and Multi-View Stereo 项目地址: https://gitcode.com/GitHub_Trending/co/colmap 还在为海量图像的三维重建而头疼吗?…

【飞腾平台实时Linux方案系列】第六篇 - 飞腾平台分布式实时控制系统同步方案。

一、简介:为什么分布式飞腾节点必须“对表”?典型场景:矿山皮带运输线:3km 内 32 个飞腾 PLC 节点,协同启停误差 >1ms 即堆煤/拉断皮带。电网差动保护:两端飞腾 FT-2000/4 装置,电流采样时刻…

Ultralytics RT-DETR实战指南:突破实时目标检测的性能瓶颈

Ultralytics RT-DETR实战指南:突破实时目标检测的性能瓶颈 【免费下载链接】ultralytics ultralytics - 提供 YOLOv8 模型,用于目标检测、图像分割、姿态估计和图像分类,适合机器学习和计算机视觉领域的开发者。 项目地址: https://gitcode…

如何快速搭建企业级抽奖系统?Lucky Draw完整指南

如何快速搭建企业级抽奖系统?Lucky Draw完整指南 【免费下载链接】lucky-draw 年会抽奖程序 项目地址: https://gitcode.com/gh_mirrors/lu/lucky-draw 在企业活动策划中,抽奖环节往往是提升参与度和活跃气氛的关键。Lucky Draw作为一款开源抽奖程…

【飞腾平台实时Linux方案系列】第七篇 - 飞腾平台实时与非实时任务协同优化。

一、简介&#xff1a;为什么要在飞腾上做“实时/非实时协同”&#xff1f;背景&#xff1a;能源、矿山、轨道交通等关键领域&#xff0c;既需要<1 ms的实时闭环控制&#xff08;PLC/运动控制&#xff09;&#xff0c;又需要跑容器、数据库、Web运维。痛点&#xff1a;通用Li…

2026年留学申请机构推荐:多国留学场景实战评价,解决规划与文书核心痛点 - 品牌推荐

摘要 在全球化教育持续深化的背景下,寻求海外优质教育资源已成为众多学子与家庭的重要规划。面对复杂的院校信息、差异化的申请要求与漫长的准备周期,选择一家专业、可靠且资源丰富的留学申请机构,成为决策者缓解信…

快速搭建MediaCrawler:完整的社交数据采集解决方案

快速搭建MediaCrawler&#xff1a;完整的社交数据采集解决方案 【免费下载链接】MediaCrawler 项目地址: https://gitcode.com/GitHub_Trending/mediacr/MediaCrawler MediaCrawler是一个功能强大的开源爬虫项目&#xff0c;专门针对小红书、抖音、快手、B站、微博等主…