【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') #获取控件下的直接属性

 



【日期】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)

posted on 2024-05-14 20:02  彩屏黑白  阅读(33)  评论(0编辑  收藏  举报

导航