feat(core): auto-commit con 10 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 13:20:36 +02:00
parent 3f6b652f3f
commit 029dbf57bd
10 changed files with 408 additions and 55 deletions
+62
View File
@@ -0,0 +1,62 @@
---
id: cdp_click_xy_human_go_browser
name: cdp_click_xy_human
kind: function
lang: go
domain: browser
purity: impure
version: 1.0.0
tested: false
description: "Click humanizado en coordenadas absolutas (x,y): mueve el ratón con trayectoria Bézier y despacha mousePressed/mouseReleased con micro-pausa variable. Primitivo de click compartido por las tres vías de acción del agente: por selector, por #ref del AX tree y por visión (bounding box de OCR/YOLO)."
tags: [cdp, browser, action, humanized, click, navegator]
signature: "func CdpClickXYHuman(c *CDPConn, x, y float64, opts MouseHumanOpts) error"
uses_functions:
- cdp_move_mouse_human_go_browser
uses_types: []
returns: []
returns_optional: false
error_type: error_go_core
imports: []
file_path: "functions/browser/cdp_click_xy_human.go"
example: |
conn, _ := browser.CdpConnect(9333)
defer browser.CdpClose(conn, 0)
// Click humanizado en el centro de un elemento detectado por visión (bbox):
browser.CdpClickXYHuman(conn, 412.0, 318.0, browser.MouseHumanOpts{})
params:
- name: c
desc: "Conexión CDP activa (de CdpConnect)."
- name: x
desc: "Coordenada X absoluta en la página, en px CSS del viewport."
- name: y
desc: "Coordenada Y absoluta en la página, en px CSS del viewport."
- name: opts
desc: "Opciones de la trayectoria humana (zero-value = defaults). Origen del movimiento via FromX/FromY."
output: "error si el movimiento del ratón o el despacho de eventos falla; nil en éxito."
---
## Ejemplo
```go
conn, _ := browser.CdpConnect(9333)
defer browser.CdpClose(conn, 0)
// El centro del bounding box lo da el #ref del AX tree (DOM.getBoxModel) o la
// detección de visión (OCR/YOLO). Aquí, click humanizado sobre ese punto:
if err := browser.CdpClickXYHuman(conn, 412.0, 318.0, browser.MouseHumanOpts{}); err != nil {
log.Fatal(err)
}
```
## Cuando usarla
Cuando ya tienes las coordenadas de píxel del objetivo: el centro del bounding box de un elemento
(resuelto por `#ref` del AX outline vía `DOM.getBoxModel`, o detectado por visión OCR/YOLO). Es el
único primitivo de click del agente — no despaches `Input.dispatchMouseEvent` a mano.
## Gotchas
- Coordenadas en el sistema de la página (px CSS del viewport), no de pantalla física.
- La humanización añade latencia (movimiento Bézier + micro-pausa). Para scraping masivo de alto
volumen, el llamador debe usar un preset rápido de `MouseHumanOpts` (política de sesión `fast`),
no humanización completa por acción.
- El destino debe estar dentro del viewport visible; haz scroll al elemento antes si hace falta.