В моем приложении 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 является интерпретируемым языком программирования.
Обходной путь — просто использовать found_index
в критериях поиска:
main_window.child_window(control_type = "ComboBox", found_index=0).click_input()
В вашем случае индекс может быть 0, 1 или 2. Вы можете дважды проверить, какой список со списком вы нашли, используя метод .draw_outline()
вместо .click_input()
.