【发布时间】:2021-11-27 17:36:20
【问题描述】:
print_control_identifier() 函数似乎没有列出所有控件。
我尝试自动化的窗口如下所示:
我正在尝试访问“编辑字段”标题下方的“加号”。我可以获得添加了 4 个控件的栏的标识符,但没有子栏的标识符。酒吧本身是:
| Toolbar - 'ToolBar' (L1586, T836, R2254, B875)
| ['ToolBar', 'ToolBarToolbar', 'Toolbar2']
| child_window(title="ToolBar", class_name="TToolBar")
更新:使用“UI 自动化”模式
通过 Inspect,我可以获得工具栏和“加号”的以下详细信息。
在 Inspect 给出的详细信息中,有没有办法通过 ChildId 访问控件?还是其他方式?
后端是默认的“win32”。将其更改为“uia”并没有透露更多信息。
更新:2021-12-01
AttributeError 的结果如下。
buttons = app.EditField.child_window(title="ToolBar", class_name="TToolBar").buttons()
>>> AttributeError: Neither GUI element (wrapper) nor wrapper method 'buttons' were found (typo?)
2021 年 12 月 2 日更新
对象本身不返回任何内容,但 print 返回以下内容:
print(app.EditField.child_window(title="ToolBar", class_name="TToolBar").wrapper_object())
>>> common_controls.ToolbarWrapper - 'ToolBar', Toolbar
然后返回:
print([w.window_text() for w in app.windows()])
>>> ['', 'Edit field', 'S100 - S10B9011DA', 'Progress', 'Enter numerical', '', 'xxxxxxx xxxxxxxx.scp - SICK CDS S100', 'CDS S100', '', .... '', 'DDE Server Window', '', 'M', 'Default IME']
主窗口是“XXXX XXXX.scp - SICK CDS S100”。从那里打开“S100 - S10B9011DA”窗口,从那里您可以访问“编辑字段”
【问题讨论】:
-
dlg_spec.child_window(title="ToolBar", class_name="TToolBar").buttons()返回什么?你能看到非空列表并走它吗?此外,最好将 Inspect.exe 切换到“UI 自动化”模式而不是 MSAA。 -
我更新了问题。
-
也许“编辑字段”窗口是主窗口的子窗口? backend="uia" 是正常情况,"win32" 应该是顶级窗口。请添加这些语句的输出:
print([w.window_text() for w in app.windows()])和app.EditField.child_window(title="ToolBar", class_name="TToolBar").wrapper_object() -
感谢您一直以来的支持!我再次更新了问题。