pywinauto дважды щелкните по элементу дерева (или откройте и дважды щелкните внутри)

#python-3.x #pywinauto

#python-3.x #pywinauto

Вопрос:

У меня есть приложение со списком TreeViews и TreeItems, и мне нужно «дважды щелкнуть» в одном элементе дерева, но я не могу найти способ сделать это.

Это мой код на python:

 #Open Application
app = Application(backend="uia").start(ApplicationName, wait_for_idle=True)
time.sleep(2)
dlg = app.top_window()


#Pass and login
app.dlg.child_window(title="", auto_id="LoginAuthPasswordBox", control_type="Edit").set_text('******')
app.dlg.child_window(auto_id="Inici_o de sesión", control_type="Button").click()

time.sleep(60)

#Connect to main window
appfull = Application(backend="uia").connect(title_re="IC Business Manager - Interaction Reporter")
dlgfull = appfull.top_window()
  

Этот код работает нормально и внутри dlgfull.print_control_identifiers() Я получил это:https://i.stack.imgur.com/NtJM8.png

И это приложение mi:https://i.stack.imgur.com/7QWyB.png

Я хотел бы «дважды щелкнуть» по первому элементу «Informe estados de agente» ИЛИ открыть его и дважды щелкнуть по первому элементу внутри:https://i.stack.imgur.com/PHYQy.png

Не могли бы вы, пожалуйста, помочь мне в этом?

Некоторые строки, которые я тестировал, не работают:

 appfull.dlgfull.child_window(title="Informe de estados de agentes", control_type="TreeItem")..click()

dlgfull.child_window(title="Informe de estados de agentes", control_type="TreeItem").click()

appfull.dlgfull.child_window(title="Informe de estados de agentes", control_type="TreeItem").double_click()

appfull.dlgfull.child_window(title="Informe de estados de agentes", control_type="TreeItem").get_child(child_spec="agentes").click()
  

Спасибо!

Ответ №1:

Используйте GetItem() наряду с методом выбора () или щелчка (), вы также можете использовать метод expand() для развертывания и просмотра элементов, которые не видны.

 treeView = topWin.TreeView    # We get the treeview object here.
# You can get item like this 
node1 = treeView.GetItem([u'TopNodeName', 'node1Name'])
node1.select()

# OR something like this
treeView.GetItem([u'TopNodeName', 'node1Name']).click()

# OR access using index of that element in treeview like:
treeView.GetItem([1, 0]).click()