我有以下自定义组合框。
我尝试从字段中选择item
或从itemcount
获取ComboboxWrapper
,但我猜pywinauto
无法识别该对象。
我不能使用auto_id=CheckboxEdit
因为它不是唯一的,我们在框架中有6个组合框。
combobox = app.Dialog.child_window(auto_id="AgrementTypeFilter", control_type="ComboBox").wrapper_object()
comboitems = combobox.item_count()
有人可以检查一下吗?感谢名单。
Custom - '' (L-1904, T328, R-1750, B374)
['', 'Custom', '0', '1', 'Custom0', 'Custom1']
child_window(auto_id="AgrementTypeFilter", control_type="Custom")
|
| Static - 'Agreement Type' (L-1900, T330, R-1754, B346)
| ['Static', 'Agreement TypeStatic', 'Agreement Type']
| child_window(title="Agreement Type", control_type="Text")
|
| Custom - '' (L-1900, T350, R-1754, B372)
| ['2', 'Custom2', 'Agreement TypeCustom']
| child_window(auto_id="Combo", control_type="Custom")
| |
| | ComboBox - '' (L-1900, T350, R-1754, B372)
| | ['ComboBox', '3', 'ComboBoxCCP']
| | child_window(auto_id="CheckBoxEdit", control_type="ComboBox")
答案 0 :(得分:0)
如果每个自定义组合框包含1个标准组合框,则无需解决此问题:
found_index
条件查找第一个组合框(例如)。代码看起来应该如此:
custom_combo = app.Dialog.child_window(auto_id="AgrementTypeFilter", control_type="Custom", found_index=0)
real_combobox = custom_combo.child_window(auto_id="CheckBoxEdit", control_type="ComboBox").wrapper_object()
real_combobox.item_count()
另一种方法是使用最佳匹配名称:
combobox = app.Dialog.ComboBoxCCP.wrapper_object()
combobox.item_count()
最后,您还可以枚举此控件类型的所有后代:
comboboxes = app.Dialog.descendants(control_type="ComboBox")
target_combobox = [combo for combo in comboboxes if combo.item_count() == 12][0]
方法descendants()
将返回已过滤的包装列表。然后很容易迭代它并找到目标。