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:
- Abre el popup de la extensión de Botize en la pestaña que quieras automatizar.
- Pulsa ● REC y realiza las acciones (hacer clic, escribir, navegar…).
- Pulsa ■ STOP para terminar.
- 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:
| Campo | Descripción |
|---|---|
role | Rol ARIA del elemento (button, link, textbox, checkbox…). |
name | Nombre 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
url | string | sí | La URL que se abrirá. |
{ "action": "navigate", "url": "https://example.com" }
wait
Pausa la receta durante un tiempo fijo.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
ms | número | no | Milisegundos de espera. Por defecto: 1000. |
{ "action": "wait", "ms": 2500 }
Acciones de interacción
click
Hace clic sobre un elemento localizado por ARIA.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
role | string | sí | Rol ARIA del objetivo. |
name | string | sí* | Nombre accesible. *Opcional si se usa nameStartsWith. |
nameStartsWith | string | no | Coincidencia por prefijo del nombre. |
parentRole | string | no | Restringe a un rol padre. |
parentName | string | no | Restringe a un nombre de padre. |
wait_for_navigation | boolean | no | Si es true, espera a que la página recargue tras el clic. |
delay | número | no | Retardo 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
role | string | sí | Rol ARIA del campo (textbox, searchbox, combobox…). |
name | string | sí | Nombre accesible del campo. |
text | string | sí | Texto a escribir. |
parentRole, parentName, nameStartsWith | no | Mismos 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
role, name, … | Mismos campos de localización que click. | ||
file_url | string | sí | URL 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
role | string | sí | Rol ARIA a buscar. |
name | string | no | Nombre accesible. Vacío/omitido significa "coincide con cualquier nombre" — combinado con role devuelve el primer nodo de ese rol en orden del documento. |
nameStartsWith | string | no | Coincidencia por prefijo del nombre; tiene prioridad sobre name. |
parentRole, parentName | string | no | Mismos campos de localización que click. |
limit | número | no | Má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. |
label | string | no | Etiqueta 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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
filter | string | interactive | interactive conserva solo los nodos accionables (botones, enlaces, campos…). all conserva todo. |
include_headings | boolean | false | Incluye los nodos heading incluso en modo interactivo. |
max_nodes | número | 500 | Lí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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
sections | string[] | todos | Limita la salida a landmarks concretos. |
include_links | boolean | false | Incluye la lista de enlaces dentro de cada landmark. |
include_images | boolean | false | Incluye 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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
item_role | string | listitem | Rol ARIA de los elementos que se van a extraer. |
sections | string[] | todos | Limita a landmarks concretos. |
paths | string[] | — | 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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
full_page | boolean | false | Si 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ámetro | Tipo | Descripción |
|---|---|---|
name | string | Nombre de la variable donde se guardará el valor. |
xpaths | string[] | Lista de XPaths candidatos. La extensión escoge el valor confirmado por más rutas. |
isImage | boolean | Si 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
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.
Hablemos
Elige día y hora.
Compartimos pantalla y resolvemos todas tus dudas.