Pular para o conteúdo principal

Preencher a página (modo A)

O modo A preenche, de uma vez, todos os campos que o Botaí reconhece na página, com uma pessoa só. Sem pessoa guardada, ele gera e guarda uma antes de preencher.

Três jeitos de acionar​

  • o atalho do teclado (tabela abaixo);
  • o botão "Preencher esta página", no popup;
  • o item do menu de contexto (botão direito › Botaí).

Atalhos​

SistemaChrome e EdgeFirefox
macOS⌥⇧P⌥⇧P
WindowsCtrl+Shift+YCtrl+Shift+Y
LinuxCtrl+Shift+YAlt+Shift+P

O atalho sugerido só vale na primeira instalação. Se outro app já usa a tecla, o popup mostra "definir atalho": escolha outra tecla na página de atalhos de extensões do navegador.

informação

O gesto nativo do atalho e o do menu têm teste só do handler, porque o Playwright não aciona os dois.

O que ele reconhece​

O Botaí reconhece 38 tipos de campo, com o classificador do core. Ele lê, nesta ordem: autocomplete, label, aria-label, name, id, placeholder, formato, tipo, opções e contexto. Isso cobre também:

  • data em dia, mês e ano separados;
  • DDD em campo separado (o telefone sai sem o DDD);
  • confirmação de e-mail;
  • usuário, sexo, país, cidade e UF.

A lista completa está em campos reconhecidos.

Campo que o classificador não conhece fica de fora, sem chute: "Idade", "Observações", "Código de indicação". "Telefone" recebe o celular, e "Telefone fixo" fica de fora de propósito. Um campo de rua sem campo de número na página recebe "rua, número".

Num cadastro realista, o Botaí preenche 21 de 23 campos. Numa página com campos extras, 19 de 19.

Como ele escreve​

O Botaí escreve pelo setter nativo e dispara eventos input, change e blur sintéticos. O valor vai inteiro, nunca caractere a caractere. Assim, o estado de um React controlado e o de uma máscara recebem o valor, a validação no blur dispara, e o foco do usuário não muda.

Testado com React 19 (no E2E) e, em laboratório, com Vue 3.5.13, imask 7.6.1, jQuery Mask 1.14.16 e maska 3.2.2.

Documentado

O react-hook-form 7.89.0, o react-imask 7.6.1, o @react-input/mask 2.0.4, o react-number-format 5.4.5 e o React 18 com react-input-mask 2.0.4 estão na matriz da pesquisa do projeto, feita no Chromium 147. A auditoria de 2026-10-08 não os rodou.

O Botaí sobrescreve o que já foi digitado: não há modo "só os vazios".

Páginas difíceis​

  • Shadow root aberta e fechada: preenche as duas.
  • Iframe da mesma origem: os campos entram na soma. Iframe de outro domínio (Stripe Elements, Pagar.me) fica de fora, por causa da permissão activeTab.
  • Honeypot e campos escondidos: ignorados.
  • maxlength: respeitado.
  • O <select> escondido do select2: incluído.

O aviso na página​

Depois de preencher, um aviso aparece no frame do topo, dentro de uma shadow root: "X de Y campos preenchidos" e um "k não reconhecidos" clicável. Os campos preenchidos ganham contorno ciano; os outros, âmbar tracejado. O aviso some em 4 s e funciona em página com CSP estrita.

O popup mostra o mesmo resultado em detalhe, com o rótulo e o seletor CSS de cada campo não reconhecido: veja o popup.

A 2ª passada do CEP​

Muitos sites buscam o CEP e sobrescrevem rua, bairro ou complemento. Cerca de 1 s depois de preencher, o Botaí regrava os valores da pessoa, só nos campos que mudaram desde a leitura.

Campos que só habilitam depois da busca de CEP ficam vazios: a 2ª passada só regrava o que o Botaí já tinha escrito.

A mesma pessoa até você pedir outra​

A pessoa fica guardada até você pedir outra com "Nova pessoa", no popup ou no menu. A idade é recalculada pela data de hoje em São Paulo.

Num fluxo de várias etapas (cadastro, endereço, pagamento), use o atalho em cada página: a pessoa é a mesma. A permissão activeTab cai quando a aba navega, então cada etapa precisa de um novo gesto (atalho, popup ou menu).

A extensão usa o mesmo motor do core e do fixture do Playwright, e os testes dela reproduzem os dourados por semente. Mesmo assim, ela sorteia a pessoa com crypto: não há opção de semente, UF nem domínio de e-mail. Para uma pessoa reproduzível, use a CLI, a biblioteca ou o fixture do Playwright.