Пользовательское поле со списком распознавания в Pywinauto
У меня ниже настраиваемое поле со списком.
я пытался выбрать item
или получить itemcount
от ComboboxWrapper
с поля, но я думаю, pywinauto
не может идентифицировать объект.
Я не могу использовать auto_id=CheckboxEdit
как это не уникально, и у нас есть 6 combobox в кадре.
combobox = app.Dialog.child_window(auto_id="AgrementTypeFilter", control_type="ComboBox").wrapper_object()
comboitems = combobox.item_count()
Может кто-нибудь проверить это? Thanx.
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")
1 ответ
Если каждое настраиваемое поле со списком содержит 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()
вернет отфильтрованный список упаковщиков. Тогда легко повторить и найти целевой.