Não encontra janela

Esse é um aplicativo InstallShield que quero automatizar

python:

bot = DesktopBot()
bot.execute(app_path)
bot.connect_to_app(backend=Backend.UIA, path=app_path)
main_window = bot.find_app_window(title_re=“Developer Edition”)
print(main_window)

retorna None
O mesmo código com o notepad funciona normal.

bot1

bot2
Essa é janela filha que abre junto com a janela principal

Olá, @hub

Sabe dizer se esse é o tipo de backend mais apropriado para esse aplicativo? Chegou a fazer alguns testes utilizando o Backend.WIN_32 ?

Nem sempre os aplicativos vão ter o mesmo comportamento com relação as janelas pais e os elementos filhos. Tente por exemplo buscar direto essa janela filha, só para observar se o comportamento é o mesmo.

Testei Backend.WIN_32 mas sem sucesso

main_window = bot.find_app_window(title_re=“Welcome”)
print(main_window)

Olá @hub, tudo bem?

Uma sugestão, seria tentar retornar a arvore de elemento da aplicação, utilizando o método print_control_identifiers, como mostra aqui na documentação.

Esse método printa no terminal a arvore de elementos do app que esta conectado. E as vezes essa arvore tem mais atributos disponiveis para acessar o elemento do que os que estão disponiveis no Accessibility Insights. Desta forma, ao procurar pela janela pai, voce poderia adicionar mais atributos, alem do title_re para que a busca seja mais resiliente. Tente fazer o seguinte para retornar o a arvore de elementos:

bot = DesktopBot()
bot.execute(app_path)
obj_bot = bot.connect_to_app(backend=Backend.UIA, title="Developer Edition")
# Ou
# obj_bot = bot.connect_to_app(backend=Backend.UIA, path=app_path)

obj_bot.DeveloperEdition.print_control_identifiers()

Se retornar mais atributos do elemento DeveloperEdition, você pode add ali na busca da janela pai, assim:

main_window = bot.find_app_window(title_re=“Developer Edition”, class_name='...', AutomationId='..')

Enfim, ai você pode adicionar os atributos pertinentes que foram retornados.

Essa é uma alternativa, porem não é garantia que dará certo, infelizmente alguns apps tenta dificultar ao máximo acessos por bots, e por isso escondem ou não deixam explicito atributos e dados dos elementos.

1 Like