feat: app script_navegador y dashboard Metabase
App Go para ejecutar scripts de navegación automatizada usando las funciones CDP del registry. Incluye script de creación de dashboard en Metabase para monitoreo. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
---
|
||||
name: script_navegador
|
||||
lang: go
|
||||
domain: infra
|
||||
description: "Ejecutor de scripts de navegador CDP sobre Chrome. Lee pasos desde YAML y los ejecuta en secuencia registrando cada resultado en operations.db."
|
||||
tags: [cdp, chrome, browser, automation, yaml]
|
||||
uses_functions:
|
||||
- chrome_launch_go_infra
|
||||
- cdp_connect_go_infra
|
||||
- cdp_navigate_go_infra
|
||||
- cdp_click_go_infra
|
||||
- cdp_type_text_go_infra
|
||||
- cdp_wait_element_go_infra
|
||||
- cdp_evaluate_go_infra
|
||||
- cdp_get_html_go_infra
|
||||
- cdp_screenshot_go_infra
|
||||
- cdp_close_go_infra
|
||||
uses_types: []
|
||||
framework: ""
|
||||
entry_point: "main.go"
|
||||
dir_path: "apps/script_navegador"
|
||||
---
|
||||
|
||||
## Descripcion
|
||||
|
||||
CLI Go que lee un archivo YAML con pasos de navegacion CDP y los ejecuta sobre Chrome, registrando cada paso y su resultado en `operations.db`.
|
||||
|
||||
## Uso
|
||||
|
||||
```bash
|
||||
# Conectarse a Chrome ya corriendo en puerto 9222
|
||||
go run . --script examples/busqueda_google.yaml
|
||||
|
||||
# Lanzar Chrome nuevo (headless)
|
||||
go run . --script examples/busqueda_google.yaml --launch --headless
|
||||
|
||||
# Puerto personalizado
|
||||
go run . --script examples/busqueda_google.yaml --port 9333
|
||||
```
|
||||
|
||||
## Formato del script YAML
|
||||
|
||||
```yaml
|
||||
name: "nombre_del_script"
|
||||
steps:
|
||||
- action: navigate
|
||||
url: "https://ejemplo.com"
|
||||
|
||||
- action: wait
|
||||
selector: "#elemento"
|
||||
timeout_ms: 5000 # opcional, default 10000
|
||||
|
||||
- action: click
|
||||
selector: "#boton"
|
||||
continue_on_error: true # opcional, default false
|
||||
|
||||
- action: type
|
||||
selector: "input[name=q]" # hace click primero para enfocar
|
||||
text: "texto a escribir"
|
||||
|
||||
- action: screenshot
|
||||
path: "/tmp/captura.png"
|
||||
full_page: false # opcional, default false
|
||||
|
||||
- action: evaluate
|
||||
expr: "document.title"
|
||||
|
||||
- action: get_html
|
||||
# sin parametros adicionales
|
||||
|
||||
- action: sleep
|
||||
ms: 500 # pausa en milisegundos
|
||||
```
|
||||
|
||||
## Acciones soportadas
|
||||
|
||||
| Accion | Parametros obligatorios | Parametros opcionales |
|
||||
|-------------|-------------------------|-------------------------------|
|
||||
| `navigate` | `url` | |
|
||||
| `wait` | `selector` | `timeout_ms` (default 10000) |
|
||||
| `click` | `selector` | `continue_on_error` |
|
||||
| `type` | `selector`, `text` | `continue_on_error` |
|
||||
| `screenshot`| `path` | `full_page`, `continue_on_error` |
|
||||
| `evaluate` | `expr` | `continue_on_error` |
|
||||
| `get_html` | — | `continue_on_error` |
|
||||
| `sleep` | `ms` | |
|
||||
|
||||
## Registro en operations.db
|
||||
|
||||
- **Entity `script_run`**: una por ejecucion del script, con metadata del script y resultado final
|
||||
- **Execution**: una por ejecucion, con `pipeline_id = "script_navegador"`, duration_ms, records_in=pasos totales, records_out=pasos exitosos
|
||||
- **Logs**: un log por cada paso ejecutado con nivel info/error
|
||||
|
||||
## Notas
|
||||
|
||||
- Si Chrome no esta corriendo y no se pasa `--launch`, la conexion falla con error claro
|
||||
- `continue_on_error: true` por paso permite continuar aunque ese paso falle
|
||||
- Flag global `--abort-on-error` (default false) aborta todo el script al primer error
|
||||
- Al terminar (exito o error), siempre se ejecuta `cdp_close` para limpiar recursos
|
||||
- operations.db se inicializa automaticamente si no existe usando `fn ops init`
|
||||
Reference in New Issue
Block a user