缺少控件标识符 - pywinauto

Missing control identifier - pywinauto

print_control_identifier() 函数似乎没有列出所有控件。

我尝试自动化的 window 看起来像这样:

我正在尝试访问“编辑字段”标题下方的“加号”。我可以获得添加了 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-02

object 本身 return 除了打印 return 之外什么都没有:

print(app.EditField.child_window(title="ToolBar", class_name="TToolBar").wrapper_object())
>>> common_controls.ToolbarWrapper - 'ToolBar', Toolbar

以及以下 returns:

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']

主要window是'XXXX XXXX.scp - SICK CDS S100'。从那里打开 window 'S100 - S10B9011DA',从那里你可以访问 'Edit field'

好的,ToolbarWrapper 的正确方法是 .button_count().button(0) 以及 .texts().tip_texts()。请参阅 ToolbarWrapper docs“win32”ToolbarWrapper。

方法 .button(0).button("Plus")(如果此文本在 .texts() 中可见)returns _toolbar_button 具有以下方法的对象:请参阅 _toolbar_button docs.