news 2026/6/10 18:18:03

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:45:15

如何用Dokploy实现全球化部署?5步搞定多语言界面

如何用Dokploy实现全球化部署?5步搞定多语言界面 【免费下载链接】dokploy Open Source Alternative to Vercel, Netlify and Heroku. 项目地址: https://gitcode.com/GitHub_Trending/do/dokploy 还在为海外用户的语言障碍头疼吗?担心不同地区的…

作者头像 李华
网站建设 2026/6/10 13:58:45

TensorRT INT8 量化难以维护?这套 CMake 工程化方案解决了

往期文章 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 以及深度学习部署工…

作者头像 李华
网站建设 2026/6/10 15:20:21

推理速度大幅提升:Ubuntu + TensorRT 加速 YOLOv5

往期文章 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 以及深度学习部署工…

作者头像 李华
网站建设 2026/6/10 16:49:04

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 设…

作者头像 李华
网站建设 2026/6/10 18:03:38

Cap开源录屏工具:3步解锁专业级屏幕录制新体验

Cap开源录屏工具:3步解锁专业级屏幕录制新体验 【免费下载链接】Cap Effortless, instant screen sharing. Open-source and cross-platform. 项目地址: https://gitcode.com/GitHub_Trending/cap1/Cap 你是否曾经遇到过这样的场景:需要紧急录制一…

作者头像 李华
网站建设 2026/6/10 15:18:15

如何快速导出原神成就:YaeAchievement完整使用指南

如何快速导出原神成就:YaeAchievement完整使用指南 【免费下载链接】YaeAchievement 更快、更准的原神成就导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement 还在为原神成就数据管理而烦恼吗?YaeAchievement作为一款专业的原…

作者头像 李华