Ejecutar acciones en el navegador
Interactua con el navegador ejecutando una secuencia de acciones específicas.
+200 apps conectables·Tareas probadas y mantenidas·Soporte humano en español e inglés
En detalle
Qué hace y para qué sirve
Cómo funciona
Así encaja en una tarea automática
Una tarea de Botize une un disparador con una o más acciones. Esta pieza es una de ellas.
Elige un disparador
El evento que inicia la tarea, de esta o de cualquier otra app.
Esta acción se ejecuta
Botize la realiza automáticamente usando los datos que entrega el disparador.
Actívala y olvídate
La tarea trabaja sola desde ese momento. Si algo no cuadra, la ajustas o te ayudamos.
¿Ya usas Botize?
Conecta tu cuenta de Google Chrome
Añade un perfil para usarlo en tus tareas. Tienes una guía paso a paso por si la necesitas.
Añadir un nuevo perfil Guía paso a pasoTus perfiles
Tus cuentas de Google Chrome conectadas
Estas son las cuentas que ya tienes enlazadas a Botize, listas para usar en tus tareas. Puedes reconectar o eliminar cualquiera de ellas.
Configuración
Opciones de personalización
Campos que puedes ajustar al usarlo 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.
observe — recibe el estado resultante de la página automáticamente
Una clave opcional observe a nivel raíz (hermana de steps) hace que la receta devuelva una instantánea compacta de lo que es accionable ahora una vez ejecutados todos los pasos y asentada la página — así una receta que solo actúa (p. ej. un click suelto) vuelve auto-descriptiva en lugar de a ciegas, sin un paso get_aria_tree aparte ni una llamada de seguimiento. Especialmente útil en recetas guiadas por un asistente de IA.
{
"observe": "interactive",
"steps": [
{ "action": "click", "role": "button", "name": "Menu" }
]
}
| Valor | Significado |
|---|---|
"interactive" | Instantánea solo de elementos interactivos (botones, enlaces, campos…), cada uno con role + name + backendDOMNodeId. Con tope duro, para que se mantenga pequeña. |
"all" | Igual pero conserva el árbol filtrado completo, no solo los roles interactivos. |
omitido / "off" | Sin instantánea — comportamiento habitual. |
La instantánea se devuelve en la misma salida Datos del navegador que get_aria_tree. Si la receta ya incluye un paso get_aria_tree explícito, ese manda y observe se ignora. Es best-effort: si no puede capturarse, se omite en silencio y nunca hace fallar la tarea.
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. |
nth | (opcional) Índice de base cero para elegir la coincidencia N-ésima en lugar de la primera. Útil cuando varios elementos comparten el mismo rol y nombre — por ejemplo, dos campos sin etiqueta en un formulario de login: nth: 0 para el primero, nth: 1 para el segundo. |
backendDOMNodeId | (opcional) Salta por completo el matching ARIA y actúa directamente sobre este id de nodo — el mismo id que devuelve un resultado de query o un nodo de get_aria_tree. Cuando se usa, role/name/etc. se ignoran. |
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. Usa nth para apuntar a uno concreto.
backendDOMNodeId solo es válido dentro de la pestaña/sesión que lo generó. Es un atajo para reaccionar a un nodo que acabas de ver en un paso anterior de la misma receta (o en la misma pestaña activa, en el backend de extensión) — no es un identificador estable para guardar y reutilizar más tarde. En el backend de nube/Lambda en particular, cada receta lanza un navegador headless completamente nuevo: un backendDOMNodeId (o dar por hecho que la página anterior sigue cargada) de una llamada previa no tiene sentido en la siguiente. Un paso de receta sin role ni backendDOMNodeId falla inmediatamente con un error claro, en lugar de quedarse colgado.
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
}
extract_repeating_items
(Renombrada de get_page_elements el 2026-07-07 — el nombre anterior sugería "todos los elementos de la página", lo que llevaba a confusión sobre su alcance real, más limitado.)
Extrae elementos repetidos (resultados de búsqueda, fichas de producto, publicaciones…) agrupados por su sección semántica y su padre. Solo recoge nodos cuyo rol ARIA coincida exactamente con item_role (por defecto listitem, es decir <li>) — no captura campos, botones ni enlaces sueltos que no formen parte de una lista repetida. Si una página no devuelve nada, ejecuta primero get_aria_tree para ver qué rol usa realmente su contenido repetido, y pásalo como item_role (por ejemplo "article" para un blog, "row" para una tabla). Para un campo/botón/enlace suelto, usa get_aria_tree o get_landmark_text en su lugar.
| 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": "extract_repeating_items", "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. |
max_width | number | — | Reduce la captura para que su ancho sea como mucho estos píxeles (mantiene la proporción). Omítelo para el tamaño original. |
quality | number | 75 | Calidad JPEG, 10–100. Menor = archivo más ligero. |
{ "action": "screenshot", "max_width": 1024, "quality": 40 }
Bajar resolución/calidad hace las capturas más ligeras y rápidas — ideal cuando las lee un asistente de IA en vez de guardarlas una persona. max_width y quality también pueden fijarse una vez en el paso (los campos Resolución de las capturas / Calidad de las capturas del formulario de esta acción) para que apliquen a cada screenshot de la receta; un valor en la propia acción tiene prioridad sobre ese valor por defecto.
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]"] }
get_cookies
Devuelve las cookies de la pestaña actual. Se leen a través del protocolo de depuración, por lo que también incluye cookies httpOnly (tokens de sesión) que document.cookie no puede ver. Útil sobre todo para capturar una sesión de login y reutilizarla en llamadas HTTP posteriores.
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
names | string[] | todas | Devuelve solo las cookies cuyo nombre esté en esta lista. Omítelo para devolver todas las cookies. |
Las cookies se devuelven en la salida Datos del navegador bajo cookies, cada una como { name, value, domain, path, secure, httpOnly, expires }.
{ "action": "get_cookies", "names": ["JSESSIONID", "cd-token", "LB"] }
Ejemplo: capturar una sesión de login
{
"steps": [
{ "action": "navigate", "url": "https://example.com/login" },
{ "action": "type", "role": "textbox", "name": "Usuario", "text": "yo@example.com" },
{ "action": "type", "role": "textbox", "name": "Contraseña", "text": "••••••" },
{ "action": "click", "role": "button", "name": "Iniciar sesión", "wait_for_navigation": true },
{ "action": "get_cookies" }
]
}
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"
}
]
}
Datos de salida
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
Aprende viendo
Tutoriales en vídeo
Vídeos cortos donde ves cómo se monta una tarea real de principio a fin.
Inspírate
Automatizaciones listas para usar
Tareas reales creadas con Google Chrome: actívalas en minutos y ajústalas a tu gusto.
¿Necesitas ayuda?
Personas detrás, de verdad
Escríbenos por email
info@botize.com
De lunes a viernes de 7h a 13h (España).
Háblanos por Telegram
t.me/botize
De lunes a viernes de 7h a 13h (España).
Ven con una idea.
Vete con una automatización.
Crea tu primera tarea en minutos. Hazlo una vez y olvídate para siempre.
Empieza a automatizar