Ir para o conteúdo

Aplicativos Windows

Aviso

Esses métodos são suportados apenas no sistema operacional Windows.

Usando os métodos abaixo, você poderá interagir com os elementos de um aplicativo em execução.

Para interagir com os elementos, você pode usar seletores e identificadores específicos. A tabela abaixo define os seletores que podem ser usados para se conectar a um aplicativo e filtrar um elemento.

Importante

Os valores desses atributos em um aplicativo podem ser visualizados usando ferramentas de espionagem.

Veja mais detalhes sobre a inspeção de aplicativos usando a ferramenta Accessibility Insights for Windows.

Dica

Além da ferramenta acima para inspecionar o aplicativo, é possível usar print_control_identifiers, um método do pywinauto que retorna os identificadores de controle da janela.

Veja mais detalhes em tutorial.

Seletor Descrição
class_name Elementos com a classe da janela
class_name_re Elementos cuja classe corresponde a uma expressão regular
parent Elementos que são filhos deste
process Elementos em execução neste processo
title Elementos com este texto
title_re Elementos cujo texto corresponde a esta expressão regular
top_level_only Apenas elementos de nível superior (padrão = True )
visible_only Somente elementos visíveis (padrão= True)
enabled_only Somente elementos habilitados (padrão= False)
best_match Elementos com um título semelhante a este
handle O identificador do elemento a ser retornado
ctrl_index O índice do elemento filho a ser retornado
found_index O índice do elemento filho filtrado para retorna
predicate_func Um gancho fornecido pelo usuário para uma validação de elemento personalizado
active_only Somente elementos ativos (padrão= False)
control_id Elementos com este ID de controle
control_type Elementos com este tipo de controle (string; para UIAutomation elementos)
auto_id Elementos com este ID de automação (para UIAutomation elementos)
framework_id Elementos com este ID de estrutura (para UIAutomation elementos)
backend Nome de back-end para usar durante a pesquisa (padrão = None significa atual back-end ativo)

Tipo de acessibilidade da aplicação (Backend)

O tipo de back-end refere-se à tecnologia de acessibilidade suportada pelo aplicativo. Você pode escolher entre dois back-ends disponíveis:

  • Win32
  • UIA

Quando usar cada um?

Win32 é o back-end usado por padrão, é frequentemente usado para aplicações: MFC, VB6, VCL, controles simples de WinForms e aplicativos legados mais antigos.

O back-end UIA é frequentemente usado para: WinForms, WPF, aplicativos da Store, Qt5 e navegadores.

Alguns aplicativos suportam ambos os tipos, mas podem ter um desempenho diferente ao usá-los. Você pode usar as ferramentas de espionagem como referência para definir qual tipo é mais apropriado para o seu aplicativo. Veja mais detalhes neste link.

Conecte-se a um aplicativo

Você pode se conectar a uma instância de um aplicativo aberto. É possível usar uma combinação de seletores e também passar a tecnologia de acessibilidade suportada pelo aplicativo (Backend).

Observação

Além dos seletores acima, você também pode usar alguns seletores de conexão específicos:

  • process: ID do processo do alvo
  • handle: Identificador de janela do alvo
  • path: Caminho usado para iniciar a aplicação alvo
from botcity.core import Backend

app_path = "<caminho para sua aplicacao.exe>"

# Abre o aplicativo.
bot.execute(app_path)

# Conectando -se ao aplicativo usando os seletores de 'path' e 'title'.
bot.connect_to_app(Backend.WIN_32, path=app_path, title="Main Window Title")
// Ainda não implementado.

Encontrando contextos

Você pode procurar por janelas e contextos do aplicativo, como uma janela principal ou uma mais específica.

# Procurando a janela principal.
main_window = bot.find_app_window(title_re="Main")

# Procurando por alguma janela específica.
popup_window = bot.find_app_window(title="Confirmation Window", class_name="ThunderRT6MDIForm")
//Ainda não implementado.

Encontrando elementos

Você pode procurar elementos de aplicativos usando o contexto geral ou um contexto pai encontrado anteriormente.

# Procurando por alguma janela específica.
popup_window = bot.find_app_window(title="Confirmation Window", class_name="ThunderRT6MDIForm")

# Procurando o elemento que está no contexto da janela encontrada.
btn_continue = bot.find_app_element(from_parent_window=popup_window, title="Continue", class_name="ThunderRT6CommandButton")

# Executando alguma operação com o elemento encontrado.
btn_continue.click()
// Ainda não implementado.

Dica

A facilidade de inspecionar e localizar as propriedades do elemento depende diretamente da estrutura do aplicativo. Em alguns casos, para manter o controle da janela principal após uma ação em uma janela secundária, será necessário redeclarar a janela principal para recuperar o controle sobre ela.

Info

O módulo Application é baseado nas funcionalidades da biblioteca pywinauto, veja mais detalhes sobre os métodos disponíveis para cada tipo de elemento neste link.