btzchrome

Ejecutar acciones en el navegador

Interactua con el navegador ejecutando una secuencia de acciones específicas.

Google Chrome Acción








Opciones de personalización

Campos configurables que puedes ajustar en tu automatización

Controla Google Chrome desde Botize enviando una receta: una lista JSON de pasos que la extensión reproducirá en orden sobre la pestaña conectada.

Esta página documenta el formato completo de la receta: cómo construirla, todas las acciones disponibles y cómo se localizan los elementos en la página.

Formato de la receta

Una receta es un objeto JSON con un único array steps:

{
  "steps": [
    { "action": "navigate", "url": "https://example.com" },
    { "action": "click", "role": "button", "name": "Aceptar" }
  ]
}

Los pasos se ejecutan de forma secuencial. Si algún paso falla, la receta se detiene y el error se reporta a Botize.

Grabar una receta

La forma más rápida de construir una receta es grabarla:

  1. Abre el popup de la extensión de Botize en la pestaña que quieras automatizar.
  2. Pulsa ● REC y realiza las acciones (hacer clic, escribir, navegar…).
  3. Pulsa ■ STOP para terminar.
  4. Pulsa ↓ Export para descargar la receta en JSON.

Después puedes ajustar el JSON a mano o volver a importarlo con ↑ Import.

Cómo se localizan los elementos

Las acciones que interactúan con la página (click, type, paste) localizan los elementos a través del árbol de accesibilidad ARIA, no mediante selectores CSS. Esto hace que las recetas sean resistentes a los cambios cosméticos del HTML.

Cada paso interactivo usa estos campos para encontrar su objetivo:

CampoDescripción
roleRol ARIA del elemento (button, link, textbox, checkbox…).
nameNombre accesible — normalmente la etiqueta visible o el atributo aria-label.
nameStartsWith(opcional) Coincidencia por prefijo sobre el nombre. Útil cuando el nombre contiene datos dinámicos (nombres de usuario, contadores, fechas). Cuando se usa, name se ignora.
parentRole(opcional) Restringe la búsqueda a elementos dentro de un rol padre concreto.
parentName(opcional) Combinado con parentRole, exige que el padre también coincida.

Cuando varios elementos coinciden, gana el primero en orden del documento. Por ejemplo, en una lista de seguidores, un paso de clic con nameStartsWith: "Seguir" siempre apuntará al primer seguidor.

Acciones de navegación

navigate

Carga una URL en la pestaña actual y espera a que termine de cargar.

ParámetroTipoRequeridoDescripción
urlstringLa URL que se abrirá.
{ "action": "navigate", "url": "https://example.com" }

wait

Pausa la receta durante un tiempo fijo.

ParámetroTipoRequeridoDescripción
msnúmeronoMilisegundos de espera. Por defecto: 1000.
{ "action": "wait", "ms": 2500 }

Acciones de interacción

click

Hace clic sobre un elemento localizado por ARIA.

ParámetroTipoRequeridoDescripción
rolestringRol ARIA del objetivo.
namestringsí*Nombre accesible. *Opcional si se usa nameStartsWith.
nameStartsWithstringnoCoincidencia por prefijo del nombre.
parentRolestringnoRestringe a un rol padre.
parentNamestringnoRestringe a un nombre de padre.
wait_for_navigationbooleannoSi es true, espera a que la página recargue tras el clic.
delaynúmeronoRetardo antes de ejecutar el paso, en ms.
{ "action": "click", "role": "button", "name": "Añadir al carrito" }

type

Escribe texto en un campo de entrada o área de texto. El campo debe tener el foco — lo habitual es ir precedido de un paso click sobre el propio campo.

ParámetroTipoRequeridoDescripción
rolestringRol ARIA del campo (textbox, searchbox, combobox…).
namestringNombre accesible del campo.
textstringTexto a escribir.
parentRole, parentName, nameStartsWithnoMismos campos de localización que click.
{ "action": "type", "role": "searchbox", "name": "Buscar", "text": "botize" }

paste

Pega un archivo (imagen, documento…) en un área de arrastrar-y-soltar o en un editor que acepte eventos de pegado.

ParámetroTipoRequeridoDescripción
role, name, …Mismos campos de localización que click.
file_urlstringURL pública del archivo que se va a pegar.
{
  "action": "paste",
  "role": "textbox",
  "name": "Mensaje",
  "file_url": "https://cdn.example.com/foto.jpg"
}

Acciones de inspección

query

Inspecciona el árbol ARIA para ver qué seleccionaría un matcher sin ejecutar ninguna acción. Útil al construir una receta para validar los selectores antes de comprometerse con un click/type/extract, o para depurar por qué una receta existente ha dejado de matchear.

Solo lectura, sin efectos colaterales: un paso query nunca altera la página ni el estado de la receta — solo reporta a qué resuelve el matcher en este momento.

ParámetroTipoRequeridoDescripción
rolestringRol ARIA a buscar.
namestringnoNombre accesible. Vacío/omitido significa "coincide con cualquier nombre" — combinado con role devuelve el primer nodo de ese rol en orden del documento.
nameStartsWithstringnoCoincidencia por prefijo del nombre; tiene prioridad sobre name.
parentRole, parentNamestringnoMismos campos de localización que click.
limitnúmeronoMáximo de coincidencias a devolver en el array matches. Por defecto 1 (solo la primera, en match). Pon 10 por ejemplo para inspeccionar una lista.
labelstringnoEtiqueta opcional que se devuelve en la respuesta; útil cuando una receta contiene varios pasos query.

La respuesta se añade a data.query (una entrada por cada paso query, en el orden de la receta):

{
  "label": null,
  "match": {
    "role": "gridcell",
    "name": "Etiqueta del item",
    "backendDOMNodeId": 1234,
    "children_count": 1,
    "parent": { "role": "row", "name": "Etiqueta del item" }
  },
  "total_matches": 3
}

Cuando el matcher no encuentra nada, match es null, total_matches vale 0 y se añade un objeto diagnostics con pistas — número de nodos que tienen ese rol, número de nodos cuyo nombre coincide y una muestra de nodos con el rol para entender qué hay realmente en el árbol.

{
  "match": null,
  "total_matches": 0,
  "diagnostics": {
    "nodes_with_role": 8,
    "nodes_with_matching_name": 0,
    "sample_nodes_with_role": [
      { "role": "gridcell", "name": "Primer item..." },
      { "role": "gridcell", "name": "Segundo item..." }
    ]
  }
}
{ "action": "query", "role": "gridcell", "name": "" }

Acciones de extracción de datos

Las acciones de extracción rellenan la salida Datos del navegador que se devuelve a Botize. Puedes combinar varias en la misma receta.

get_aria_tree

Devuelve el árbol de accesibilidad de la página actual. Ideal para que una IA entienda la estructura de la página.

ParámetroTipoPor defectoDescripción
filterstringinteractiveinteractive conserva solo los nodos accionables (botones, enlaces, campos…). all conserva todo.
include_headingsbooleanfalseIncluye los nodos heading incluso en modo interactivo.
max_nodesnúmero500Límite duro para evitar salidas enormes.
{ "action": "get_aria_tree", "filter": "interactive", "include_headings": true }

get_landmark_text

Extrae el texto visible de la página agrupado por landmark ARIA (main, navigation, banner, contentinfo, complementary, search, region). Es la mejor opción para fichas de producto, artículos y páginas ricas en contenido.

ParámetroTipoPor defectoDescripción
sectionsstring[]todosLimita la salida a landmarks concretos.
include_linksbooleanfalseIncluye la lista de enlaces dentro de cada landmark.
include_imagesbooleanfalseIncluye la lista de imágenes dentro de cada landmark.
{
  "action": "get_landmark_text",
  "sections": ["main"],
  "include_links": true,
  "include_images": true
}

get_page_elements

Extrae elementos repetidos (resultados de búsqueda, fichas de producto, publicaciones…) agrupados por su sección semántica y su padre.

ParámetroTipoPor defectoDescripción
item_rolestringlistitemRol ARIA de los elementos que se van a extraer.
sectionsstring[]todosLimita a landmarks concretos.
pathsstring[]Restringe la salida a ramas concretas, por ejemplo "main > list_results".
{ "action": "get_page_elements", "item_role": "listitem", "sections": ["main"] }

Cada elemento extraído incluye su texto, sus enlaces salientes y sus imágenes.

screenshot

Captura una imagen JPEG de la pestaña actual.

ParámetroTipoPor defectoDescripción
full_pagebooleanfalseSi es true, captura la página completa con scroll; si no, solo el viewport.
{ "action": "screenshot", "full_page": true }

La captura se devuelve en la salida URL de captura.

extract

Extrae un único valor (texto o imagen) de la página. Normalmente se genera pulsando Extract en la grabadora; su uso manual es poco habitual.

ParámetroTipoDescripción
namestringNombre de la variable donde se guardará el valor.
xpathsstring[]Lista de XPaths candidatos. La extensión escoge el valor confirmado por más rutas.
isImagebooleanSi es true, extrae src en lugar de texto.
{ "action": "extract", "name": "precio", "xpaths": ["//span[@data-price]"] }

Ejemplo: extraer una ficha de producto

{
  "steps": [
    { "action": "navigate", "url": "https://example-shop.com/product/123" },
    {
      "action": "get_landmark_text",
      "sections": ["main"],
      "include_images": true
    },
    { "action": "screenshot" }
  ]
}

Ejemplo: pulsar el primer botón "Seguir también" en X

{
  "steps": [
    { "action": "navigate", "url": "https://x.com/tu-usuario/followers" },
    {
      "action": "click",
      "role": "button",
      "nameStartsWith": "Seguir también",
      "parentRole": "generic",
      "parentName": "Seguir también"
    }
  ]
}



Información entregada

Al ejecutarse, esta operación entrega los siguientes datos, pudiendo ser utilizados en la misma tarea automática.

  • Etiquetas

  • URL {{url}}

    URL

  • Datos del navegador {{browser_data}}

    Datos del navegador

  • URL de la captura de pantalla {{screenshot_url}}

    URL pública de la captura de pantalla tomada por el navegador (si la receta incluía una acción de captura)

  • Código de estado {{status_code}}

    Código de estado




Video tutoriales


Navega una vez y repite en modo automático

Pasos para automatizar flujos dentro de Google Chrome. Manda un comando de Telegram y se convertirá en una publicación dentro de un grupo de Facebook.

▶ YouTube


Escríbenos

Por email o por Telegram.
De lunes a viernes de 7h a 13h (España).

Hablemos

Elige día y hora.
Compartimos pantalla y resolvemos todas tus dudas.