Automação de Aplicativos Electron
Automatize qualquer aplicativo desktop Electron usando agent-browser. Os aplicativos Electron são construídos sobre o Chromium e expõem uma porta do Chrome DevTools Protocol (CDP) à qual o agent-browser pode se conectar, permitindo o mesmo fluxo de trabalho de snapshot e interação usado para páginas web.
Fluxo de Trabalho Principal
- Inicie o aplicativo Electron com depuração remota ativada
- Conecte o agent-browser à porta CDP
- Faça um snapshot para descobrir elementos interativos
- Interaja usando referências de elementos
- Faça um novo snapshot após navegação ou mudanças de estado
# Inicie um aplicativo Electron com depuração remota
open -a "Slack" --args --remote-debugging-port=9222
# Conecte o agent-browser ao aplicativo
agent-browser connect 9222
# Fluxo de trabalho padrão a partir daqui
agent-browser snapshot -i
agent-browser click @e5
agent-browser screenshot slack-desktop.png
Iniciando Aplicativos Electron com CDP
Todo aplicativo Electron suporta a flag --remote-debugging-port, pois ela é integrada ao Chromium.
macOS
# Slack
open -a "Slack" --args --remote-debugging-port=9222
# VS Code
open -a "Visual Studio Code" --args --remote-debugging-port=9223
# Discord
open -a "Discord" --args --remote-debugging-port=9224
# Figma
open -a "Figma" --args --remote-debugging-port=9225
# Notion
open -a "Notion" --args --remote-debugging-port=9226
# Spotify
open -a "Spotify" --args --remote-debugging-port=9227
Linux
slack --remote-debugging-port=9222
code --remote-debugging-port=9223
discord --remote-debugging-port=9224
Windows
"C:\Users\%USERNAME%\AppData\Local\slack\slack.exe" --remote-debugging-port=9222
"C:\Users\%USERNAME%\AppData\Local\Programs\Microsoft VS Code\Code.exe" --remote-debugging-port=9223
Importante: Se o aplicativo já estiver em execução, feche-o primeiro e depois o inicie novamente com a flag. A flag --remote-debugging-port deve estar presente no momento da inicialização.
Conectando
# Conecte a uma porta específica
agent-browser connect 9222
# Ou use --cdp em cada comando
agent-browser --cdp 9222 snapshot -i
# Descubra automaticamente um aplicativo baseado em Chromium em execução
agent-browser --auto-connect snapshot -i
Após o connect, todos os comandos subsequentes terão como alvo o aplicativo conectado, sem necessidade de --cdp.
Gerenciamento de Abas
Os aplicativos Electron geralmente têm várias janelas ou webviews. Use comandos de aba para listar e alternar entre elas:
# Liste todos os alvos disponíveis (janelas, webviews, etc.)
agent-browser tab
# Alterne para uma aba específica pelo índice
agent-browser tab 2
# Alterne por padrão de URL
agent-browser tab --url "*settings*"
Suporte a Webview
Os elementos <webview> do Electron são descobertos automaticamente e podem ser controlados como páginas normais. Os webviews aparecem como alvos separados na lista de abas com type: "webview":
# Conecte-se ao aplicativo Electron em execução
agent-browser connect 9222
# Liste os alvos – webviews aparecem junto com as páginas
agent-browser tab
# Exemplo de saída:
# 0: [page] Slack - Main Window https://app.slack.com/
# 1: [webview] Conteúdo Incorporado https://example.com/widget
# Alterne para um webview
agent-browser tab 1
# Interaja com o webview normalmente
agent-browser snapshot -i
agent-browser click @e3
agent-browser screenshot webview.png
Nota: O suporte a webview funciona por meio de conexão CDP bruta.
Padrões Comuns
Inspecionar e Navegar em um Aplicativo
open -a "Slack" --args --remote-debugging-port=9222
sleep 3 # Aguarde o aplicativo iniciar
agent-browser connect 9222
agent-browser snapshot -i
# Leia a saída do snapshot para identificar elementos da interface
agent-browser click @e10 # Navegue para uma seção
agent-browser snapshot -i # Faça um novo snapshot após a navegação
Capturar Telas de Aplicativos Desktop
agent-browser connect 9222
agent-browser screenshot app-state.png
agent-browser screenshot --full full-app.png
agent-browser screenshot --annotate annotated-app.png
Extrair Dados de um Aplicativo Desktop
agent-browser connect 9222
agent-browser snapshot -i
agent-browser get text @e5
agent-browser snapshot --json > app-state.json
Preencher Formulários em Aplicativos Desktop
agent-browser connect 9222
agent-browser snapshot -i
agent-browser fill @e3 "consulta de pesquisa"
agent-browser press Enter
agent-browser wait 1000
agent-browser snapshot -i
Executar Vários Aplicativos Simultaneamente
Use sessões nomeadas para controlar vários aplicativos Electron ao mesmo tempo:
# Conecte-se ao Slack
agent-browser --session slack connect 9222
# Conecte-se ao VS Code
agent-browser --session vscode connect 9223
# Interaja com cada um de forma independente
agent-browser --session slack snapshot -i
agent-browser --session vscode snapshot -i
Esquema de Cores
O esquema de cores padrão ao conectar via CDP pode ser light. Para preservar o modo escuro:
agent-browser connect 9222
agent-browser --color-scheme dark snapshot -i
Ou defina globalmente:
AGENT_BROWSER_COLOR_SCHEME=dark agent-browser connect 9222
Solução de Problemas
"Conexão recusada" ou "Não é possível conectar"
- Certifique-se de que o aplicativo foi iniciado com
--remote-debugging-port=NNNN - Se o aplicativo já estava em execução, feche e reinicie com a flag
- Verifique se a porta não está em uso por outro processo:
lsof -i :9222
O aplicativo inicia, mas a conexão falha
- Aguarde alguns segundos após a inicialização antes de conectar (
sleep 3) - Alguns aplicativos levam tempo para inicializar o webview
Elementos não aparecem no snapshot
- O aplicativo pode usar vários webviews. Use
agent-browser tabpara listar os alvos e alternar para o correto
Não é possível digitar em campos de entrada
- Tente
agent-browser keyboard type "texto"para digitar no foco atual sem um seletor - Alguns aplicativos Electron usam componentes de entrada personalizados; use
agent-browser keyboard inserttext "texto"para ignorar eventos de tecla
Aplicativos Suportados
Qualquer aplicativo criado com Electron funciona, incluindo:
- Comunicação: Slack, Discord, Microsoft Teams, Signal, Telegram Desktop
- Desenvolvimento: VS Code, GitHub Desktop, Postman, Insomnia
- Design: Figma, Notion, Obsidian
- Mídia: Spotify, Tidal
- Produtividade: Todoist, Linear, 1Password
Se um aplicativo é construído com Electron, ele suporta --remote-debugging-port e pode ser automatizado com agent-browser.