【pywinauto】控件获取不到问题?
【日期】2024/5/14
【问题】1、控件获取不到问题?
【解决办法】
1、QT软件,软件内的控件分为win 自带的控件 还要自定义控件,win 自带的控件一般使用inspect.exe 工具获取到,自定义的控件存在获取不到的情况,通过鼠标模拟点击等动作触发控件
2、控件获取不到,可能是因为父控件获取的不对,导致获取不到,详细使用inspect.exe 查看控件的嵌套情况
3、特殊场景:文件加载时候,cpu一直占用,导致inspect.exe 无响应。 请求研发出特殊版本包,获取对于控件属性
4、使用pywinauto 自带的方法,获取控件信息,尝试获取
is_visible: 控件是否可见。
is_enabled: 控件是否启用。
print(menu.wrapper_object()) # 获取控件类型
print(dir(menu.wrapper_object())) # 获取该控件支持的方法
print(menu.children) # 获取控件的子元素
class_name # 获取控件类名
print(menu.get_properties()) # 以字典形式返回控件的属性 * 好用
DockableDBTree.print_control_identifiers(filename='项目文件.txt') #获取控件下的直接属性
MainWindow.descendants()
【日期】2024/5/17
【问题】2、控件可用信息少,且有效信息存在重复?
【解决办法】
children()
方法: 这个方法返回控件的直接子控件。也就是说,它只返回那些直接附加到给定控件上的子控件。
from pywinauto.application import Application # 启动或连接到应用程序 app = Application().start("notepad.exe") # 或连接到已运行的实例 # app = Application().connect(path="notepad.exe") # 选择顶层窗口 dlg = app.window(title='无标题 - 记事本') # 获取所有直接子控件 for child in dlg.children(): print(child.window_text())
descendants()
方法: 这个方法返回控件的所有子控件,包括嵌套子控件。也就是说,它会递归地查找给定控件下的所有子控件,无论它们被嵌套了多少层。
from pywinauto.application import Application # 启动或连接到应用程序 app = Application().start("notepad.exe") # 或连接到已运行的实例 # app = Application().connect(path="notepad.exe") # 选择顶层窗口 dlg = app.window(title='无标题 - 记事本') # 获取所有子控件(包括嵌套子控件) for descendant in dlg.descendants(): print(descendant.window_text())
【日期】2024/5/17
【问题】控件不支持对于的方法
【解决办法】
1、获取控件的 type type(控件对象)
2、再获取控件所有支持的方法或属性 dir(控件对象)
【日期】2024/5/17
【问题】ListViewWrapper选择后未生效
#获取元素ZhongJiQi的位置,该函数返回一个top,left,right,button的元组 ZhongJiQi_rect=ZhongJiQi.rectangle() #然后调用list_view的方法来实现控件的双击 list_view.double_click(coords=(ZHongJiQi.left,ZHongJiQi.top))
1、使用ComboBoxWrapper.select 报 NULL COM pointer access
2、ListBox :获取选项,再item_value.click_input() 没反应
3、ListBox 直接选,还是不行
【解决】第二种
windows 桌面GUI自动化- 12.pywinauto 组合框控件ComboBox操作 - 上海-悠悠 - 博客园 (cnblogs.com)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)