Oi, gostaria de automatizar uma aplicação web usando n8n. O fluxo de trabalho deve abrir um navegador, navegar para uma URL especificada, aguardar o carregamento completo da página, inserir credenciais de login, fazer login, clicar nos botões necessários, extrair os dados necessários da página e, em seguida, exportar os dados extraídos para um arquivo Excel. Você pode me guiar sobre como configurar isso no n8n?
Comece verificando se o aplicativo tem uma API, URL de exportação ou download de relatório. Automatizar um navegador através do login é o fallback frágil, especialmente se o site tem 2FA, captcha ou botões que mudam.
Para um primeiro teste no n8n, restrinja a uma única página após o login: uma URL, uma tabela/lista para extrair e as colunas exatas do Excel que você espera. Não publique credenciais ou URLs privadas aqui; apenas o tipo do aplicativo e a estrutura da página de destino.
@Sakthi adicionando ao oimrqs, se houver alguma API ou endpoint de exportação, use-o e pule o navegador, é muito menos frágil. mas se você realmente precisar fazer login e clicar na interface, aviso: o n8n core não tem nó para controlar navegador, então há duas rotas:
- auto-hospedado: um nó da comunidade como n8n-nodes-puppeteer ou playwright para automatizar o navegador.
- na nuvem, ou para evitar executar um navegador: um serviço headless externo como Browserless via o nó HTTP Request, ele faz o login/clique/scrape e retorna o html.
depois extraia os campos com o nó HTML Extract e exporte com Convert to File definido como xlsx. mas esgote a rota da API primeiro, como o oimrqs disse, fluxos de interface quebram no segundo que um botão ou login muda.
Obrigado pelas orientações. Meu cenário exato é abrir a janela do SAP, fazer login, inserir o tcode, navegar até a tabela, clicar no botão de extração e salvar os dados na unidade local. Como as chaves de API não foram fornecidas, pretendo prosseguir com automação de interface.
Estou trabalhando em uma configuração auto-hospedada e planejando usar um node da comunidade (Playwright) ou n8n-node-puppeteer para automação de navegador. Você teria uma estrutura de exemplo ou um fluxo de trabalho de referência que me ajudasse a configurar essa abordagem efetivamente? esse método funciona
@Sakthi ótima observação, se for o cliente desktop SAP GUI (janela SAP Logon com tcodes), Playwright e puppeteer não conseguem automatizar, são apenas para browser. só funcionariam se seu SAP fosse Fiori/WebGUI baseado em browser.
duas opções reais:
-
se tiver que ser o GUI desktop: isso é território de SAP GUI Scripting, não é ferramenta de browser. você ativa e controla com algo como SapGuiLibrary do Robot Framework ou uma ferramenta RPA do Windows, n8n não consegue tocar o gui desktop direto então você dispara esse script (via Execute Command/SSH), deixa fazer tcode → extrair → salvar arquivo, aí n8n pega o arquivo.
-
melhor, pula a gui: SAP não é realmente “sem API”, expõe OData/RFC você autentica com suas credenciais SAP normais (basic auth, sem chave separada). a tabela que você tá puxando é quase certamente um serviço OData ou view CDS, pergunta pro seu admin de Basis qual é, aí é só um HTTP Request no n8n, sem UI frágil nenhuma.
eu empurraria forte pela opção 2.
Obrigado pelo esclarecimento. Vou seguir a opção 2.
Só para confirmar: com endpoints SAP OData/CDS e nome de serviço algo como isto (GET /sap/opu/odata/sap/service name/table name), podemos navegar e consultar diretamente usando o nó HTTP com nosso próprio nome de usuário/senha do SAP, sem necessidade de chaves de API? Além disso, é necessário alguma configuração ou habilitação do lado da equipe SAP (permissões, serviços habilitados, nome do serviço, etc.)?
Se funcionar, você tem um exemplo de fluxo JSON com os passos que já testou? Seria muito útil.
Bem-vindo @Sakthi! Sim, SAP OData funciona com o nó HTTP Request usando Basic Auth - sem chaves de API, apenas seu usuário/senha do SAP. Configure o método como GET, a URL como https://your-sap-host/sap/opu/odata/sap/SERVICE_NAME/ENTITY_SET, e em Autenticação selecione “Basic Auth” com suas credenciais do SAP. Adicione o cabeçalho sap-client: 100 (substitua 100 pelo número do seu cliente) e Accept: application/json para que a resposta volte como JSON em vez de XML. O time do SAP precisa ter habilitado o serviço na transação SOAMANAGER ou /IWFND/MAINT_SERVICE primeiro, e seu usuário SAP precisa ter os objetos de autorização apropriados - se receber um 403, geralmente é uma role de autenticação ausente no lado do SAP.
@Sakthi sim, exatamente o que nguyenthieutoan cobriu no lado de autenticação/serviço. aqui está um fluxo mínimo importável, basta trocar seu host/serviço/entidade e apontar o nó HTTP para sua credencial Basic Auth:
uma coisa a ajustar: OData v2 retorna suas linhas sob d.results (o que está no Split Out), v4 as retorna sob value, então mude esse campo para corresponder ao seu serviço.
Uma coisa que vale a pena adicionar à rota OData é usar os parâmetros de query $top e $skip para paginar tabelas grandes; caso contrário, o SAP costuma limitar a resposta geralmente a 100–500 linhas e você achará que obteve tudo, mas não.
Exemplo:
/sap/opu/odata/sap/SERVICE/ENTITY?$top=500&$skip=0
No n8n, coloque isso em loop com um nó Loop Over Items, incrementando $skip a cada vez até que a contagem de resultados seja menor que $top; essa é sua condição de saída.
Além disso, se você receber XML em vez de JSON, adicione $format=json à URL em vez de confiar apenas no cabeçalho Accept; algumas versões do SAP precisam dos dois.