QANode Logo

Nó Web Flow

O nó Web Flow permite automatizar interações com páginas web usando seletores CSS, XPath, data-testid e texto. É ideal quando você precisa de seletores tradicionais e controle detalhado sobre a localização de elementos.

Dica: Se preferir localizadores semânticos baseados em acessibilidade (getByRole, getByLabel, etc.), use o nó Smart Locators.


Visão Geral

PropriedadeValor
Tipoweb-flow
CategoriaWeb
Cor🔵 Azul (#3b82f6)
Entradain
Saídaout

Configuração Geral

CampoTipoPadrãoDescrição
Modo de Sessãonew / reusenewNova sessão ou reutilizar existente
Session IDstringID da sessão para reutilizar (quando reuse)
HeadlessbooleantrueExecutar sem interface gráfica visível
Estratégia de StorageinMemory / persistedinMemoryPersistir cookies/localStorage entre execuções
Chave de StoragestringIdentificador do storage persistido

Modo de Sessão

  • Nova Sessão (new): Abre um novo navegador para cada execução. Ideal para testes isolados.
  • Reutilizar Sessão (reuse): Usa uma sessão de navegador já aberta por outro nó Web Flow/Smart Locators. Útil para dividir testes longos em múltiplos nós mantendo o mesmo navegador e cookies.

Estratégia de Storage

  • Em Memória (inMemory): Cookies e localStorage são descartados ao final da execução
  • Persistido (persisted): Cookies e localStorage são salvos com uma chave e podem ser reutilizados em execuções futuras. Ideal para manter sessões de login entre execuções.

Passos (Web Steps)

O nó Web Flow executa uma sequência de passos configuráveis. Cada passo representa uma ação no navegador.

Ações Disponíveis

AçãoCorDescrição
navigate🔵Navegar para uma URL
click🟡Clicar em um elemento
type🟢Digitar texto em um campo
wait🟣Aguardar condição ou tempo
assert🔴Verificar condição na página
extract🔵 CianoExtrair dados de um elemento
hover🔵 CianoPassar o mouse sobre um elemento
scroll🟡Rolar a página
refresh🟠Recarregar a página
select🟣Selecionar opção de um dropdown
press-key🟢Pressionar uma tecla
frameCinzaAlternar entre frames/iframes

Estratégias de Seletor

O Web Flow usa estratégias de seletor para localizar elementos na página. Cada passo pode ter múltiplas estratégias ordenadas por prioridade — se a primeira não encontrar o elemento, a próxima é tentada.

EstratégiaDescriçãoExemplo
cssSeletor CSS#login-button, .submit-btn, [data-testid="login"]
dataTestIdAtributo data-testidlogin-button
roleARIA rolebutton
textTexto visívelEntrar
xpathExpressão XPath//button[@type="submit"]

Prioridade recomendada:

  1. dataTestId — Mais estável, não muda com layout
  2. css com ID — Geralmente único na página
  3. role — Baseado em acessibilidade
  4. text — Pode mudar com traduções
  5. xpath — Último recurso, mais frágil

Detalhes das Ações

navigate

Navega para uma URL específica.

CampoTipoDescrição
URLstringURL de destino (suporta expressões {{ }})

Exemplo:

URL: https://meusite.com/login
URL: {{ variables.BASE_URL }}/dashboard

click

Clica em um elemento da página.

CampoTipoDescrição
SeletoresarrayEstratégias de seletor
TentativasnumberNúmero de tentativas (padrão: 3)

O click tenta localizar o elemento usando cada estratégia na ordem. Se falhar, aguarda e tenta novamente (até o número de tentativas).


type

Digita texto em um campo de entrada.

CampoTipoDescrição
SeletoresarrayEstratégias de seletor
TextostringTexto a ser digitado (suporta {{ }})
Limpar PrimeirobooleanLimpa o campo antes de digitar

Nota: A ação type usa fill() do Playwright, que substitui o valor do campo instantaneamente. Para simular digitação caractere por caractere, use o nó Smart Locators com a ação type (pressSequentially).


wait

Aguarda uma condição antes de prosseguir.

CampoTipoDescrição
ModostringTipo de espera
Timeout (ms)numberTempo máximo de espera
SeletoresarraySeletores (modo selectorVisible)

Modos:

ModoDescrição
networkIdleAguarda todas as requisições de rede terminarem
selectorVisibleAguarda um elemento ficar visível
timeoutAguarda um tempo fixo (ms)

assert

Verifica uma condição na página. Se a condição falhar, o passo é marcado como falha.

CampoTipoDescrição
NomestringIdentificador da asserção
ModostringTipo de verificação
SeletoresarraySeletores do elemento
Texto EsperadostringValor esperado
Case SensitivebooleanSensível a maiúsculas
Continuar em FalhabooleanNão falhar o nó inteiro

Modos:

ModoDescrição
elementExistsVerifica se o elemento existe na página
textContainsVerifica se o texto do elemento contém o valor esperado
textEqualsVerifica se o texto do elemento é exatamente o valor esperado

Os resultados das asserções ficam disponíveis nos outputs:

{{ steps["web-flow"].outputs.asserts.nomeAsserção }}  →  true ou false

extract

Extrai dados de um elemento da página.

CampoTipoDescrição
NomestringNome da extração (chave no output)
SeletoresarraySeletores do elemento
AtributostringO que extrair

Atributos:

AtributoDescrição
textTexto visível do elemento
innerHTMLHTML interno
hrefURL de links
srcURL de imagens
valueValor de campos de formulário

Os dados extraídos ficam disponíveis nos outputs:

{{ steps["web-flow"].outputs.extracts.nomeExtracao }}

hover

Passa o mouse sobre um elemento.

CampoTipoDescrição
SeletoresarraySeletores do elemento
TentativasnumberNúmero de tentativas
Espera Após (ms)numberTempo de espera após o hover

scroll

Rola a página ou até um elemento.

CampoTipoDescrição
ModostringTipo de rolagem
PixelsnumberQuantidade de pixels (modo by)
Espera Após (ms)numberTempo de espera após rolar
SeletoresarraySeletores (modo toSelector)

Modos:

ModoDescrição
toSelectorRola até o elemento ficar visível
byRola uma quantidade fixa de pixels
toBottomRola até o final da página

refresh

Recarrega a página atual.

CampoTipoDescrição
Aguardar AtéstringEvento de carregamento
Espera Após (ms)numberTempo adicional após recarregar

Eventos:

EventoDescrição
loadPágina completamente carregada
domcontentloadedDOM pronto (mais rápido)
networkidleSem requisições de rede pendentes

select

Seleciona uma opção de um elemento <select> (dropdown).

CampoTipoDescrição
SeletoresarraySeletores do dropdown
Selecionar PorstringCritério de seleção
ValorstringValor correspondente ao critério

Critérios:

CritérioDescrição
valuePelo atributo value da option
labelPelo texto visível da option
indexPelo índice (posição) da option

press-key

Pressiona uma tecla no teclado.

CampoTipoDescrição
TeclastringNome da tecla (ex: Enter, Tab, Escape)
SeletoresarraySeletores do elemento focado (opcional)
Espera Após (ms)numberTempo de espera após pressionar

frame

Alterna o contexto para um iframe.

CampoTipoDescrição
ModostringMétodo de seleção do frame
SeletoresarraySeletores (modo selector)
Nome do FramestringNome (modo name)
Timeout (ms)numberTempo máximo de espera

Modos:

ModoDescrição
selectorLocaliza o iframe por seletor CSS
nameLocaliza o iframe pelo atributo name
mainVolta ao contexto principal (fora do iframe)

Evidências (Screenshots)

Cada passo pode ter configuração de evidência individual:

CampoTipoDescrição
Capturar ScreenshotbooleanAtivar captura
Modobefore / after / bothQuando capturar
Template de NomestringNome customizado do arquivo
Aguardar CarregamentostringEvento antes de capturar
Delay (ms)numberTempo adicional antes da captura

Outputs

OutputTipoDescrição
sessionIdstringID da sessão do navegador
extractsobjectDados extraídos (chave → valor)
assertsobjectResultados das asserções (chave → boolean)

Exemplo Completo

Login em um site

Passos configurados no nó:

  1. navigatehttps://meusite.com/login
  2. type → Seletor: #email, Texto: {{ variables.USER_EMAIL }}
  3. type → Seletor: #password, Texto: {{ variables.USER_PASSWORD }}
  4. click → Seletor: button[type="submit"]
  5. wait → Modo: networkIdle
  6. assert → Nome: loginOk, Modo: textContains, Seletor: .welcome, Texto: Bem-vindo
  7. extract → Nome: userName, Seletor: .user-name, Atributo: text

Resultado: Após execução, os outputs serão:

{
  "sessionId": "abc-123",
  "extracts": { "userName": "João Silva" },
  "asserts": { "loginOk": true }
}

Dicas

  • Use data-testid como estratégia principal de seletor — é mais estável
  • Configure screenshots nos passos críticos para facilitar a depuração
  • Use reutilização de sessão quando múltiplos nós Web Flow/Smart Locators precisam compartilhar o mesmo navegador
  • Para formulários com autocomplete ou máscaras, considere usar o nó Smart Locators com a ação type (digitação caractere por caractere)
  • O modo headless: false é útil durante o desenvolvimento para visualizar o que o teste está fazendo