Как выбрать поле со списком без заголовка с помощью pywinauto

В моем приложении Windows есть три поля со списком без заголовка, но разные элементы списка. Как я могу выбрать правильный ComboBox на основе содержащихся в нем элементов. Если я выберу только Control_Type, я получаю ElementAmbigousError.

Я получаю сообщение об ошибке: -

pywinauto.findwindows.ElementAmbigousError: есть 3 элемента, которые соответствовать критериям {'control_type': 'ComboBox', 'top_level_only': Ложь, «родительский»: <uia_element_info.UIAElementInfo — «ИмяПриложения», MetroWindow, 591164>, «бэкенд»: «uia»}


from pywinauto.application import Application
from pywinauto.mouse import click
import time


# Path to the application executable
app_path = r"file path"

# Start the application
app = Application(backend='uia').start(app_path)

# Wait for the main window to appear (adjust timeout as needed)
main_window = app.window(title_re = "ApplicationName")
# Now you can interact with the main window or its controls as needed
# Example: print the main window's text
print(main_window.window_text())

# Example: click a button in the main window
main_window.child_window(title = "System.Windows.Controls.ListViewItem", auto_id = "Alarm", control_type = "ListItem").click_input()
time.sleep(1)

main_window.child_window(control_type = "ComboBox").click_input()

🤔 А знаете ли вы, что...
Python является интерпретируемым языком программирования.


1
113
1

Ответ:

Решено

Обходной путь — просто использовать found_index в критериях поиска:

main_window.child_window(control_type = "ComboBox", found_index=0).click_input()

В вашем случае индекс может быть 0, 1 или 2. Вы можете дважды проверить, какой список со списком вы нашли, используя метод .draw_outline() вместо .click_input().