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 atributos e propriedades de um aplicativo Windows podem ser visualizados usando ferramentas de espionagem.
Utilizando o plugin do BotCity Studio para Visual Studio Code, você tem acesso ao BotCity Windows Inspector, que possui recursos específicos para inspecionar aplicativos Windows e gerar código Python integrado com o framework de desenvolvimento.
Veja mais detalhes sobre automações de aplicativos Desktop e o uso do BotCity Windows Inspector neste 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
Conectando a partir de uma instância do pywinauto¶
Caso você já utilize a biblioteca pywinauto
e já possua a instância de um aplicativo configurada no seu código, você poderá utiliza-lá em conjunto com o Framework Desktop da BotCity.
Basta passar a sua instância Application
ou WindowSpecification
referente ao aplicativo para a propriedade app
do bot.
from botcity.core import DesktopBot, Backend
from pywinauto.application import Application
from pywinauto import Desktop
# Instanciando o DesktopBot
bot = DesktopBot()
# Iniciando o navegador através da classe 'Application' do pywinauto
chrome_path = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
chrome_app = Application(backend='uia').start(
chrome_path + ' --force-renderer-accessibility ''https://<URL>'
)
# Configurando a propriedade `app` do DesktopBot utilizando essa instância criada com o pywinauto
bot.app = chrome_app
...
# Obtendo a referência da janela principal da calculadora
calc_app = Desktop(backend="uia").Calculator
# Configurando a propriedade `app` do DesktopBot utilizando essa instância criada com o pywinauto
bot.app = calc_app
Dica
Caso você utilize essa estratégia, não será necessário utilizar o método connect_to_app
.
Encontrando contextos¶
Você pode procurar por janelas e contextos do aplicativo, como uma janela principal ou uma mais específica.
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()
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 procurar novamente pela referência da janela principal para recuperar o controle sobre ela.
Info
O módulo Windows Applications
é baseado nas funcionalidades da biblioteca pywinauto
.
Veja mais detalhes sobre os métodos disponíveis para cada tipo de elemento neste link.