Files
fn_registry/functions/browser/cdp_hover_ref.md
T
Egutierrez 7d395f39e5 feat(browser): cdp_click_ref/cdp_hover_ref usan cdp_wait_actionable
Antes de calcular el centro y despachar el pointer, ambos esperan a que el
elemento sea accionable (visible + stable + hit-test contra elementFromPoint),
evitando clicks/hover tragados por overlays/banners o por elementos aún
montándose o animándose. Si la comprobación no converge en 2s, se cae al
cálculo de centro previo (sin regresión). Modo 'instant' sigue saltando al
click JS directo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 20:57:44 +02:00

2.5 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, params, output, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path params output file_path
cdp_hover_ref function go browser 1.0.0 impure func CdpHoverRef(c *CDPConn, backendNodeID int, opts MouseHumanOpts) error Mueve el ratón con trayectoria humanizada (Bézier) sobre el elemento identificado por su #ref del AX outline. Útil para activar menús desplegables, tooltips y cualquier interacción que dependa de hover. El #ref es el backendDOMNodeId estable del nodo DOM.
cdp
browser
action
ref
humanized
navegator
cdp_move_mouse_human_go_browser
cdp_wait_actionable_go_browser
false error_go_core
false
name desc
c Conexión CDP activa al tab objetivo.
name desc
backendNodeID El #ref del AX outline = backendDOMNodeId estable del nodo DOM. Se obtiene de page_perceive / render_ax_outline.
name desc
opts Opciones de trayectoria humanizada (jitter, velocidad, curva Bézier). Zero-value da humanización por defecto.
nil si el movimiento de ratón se completó; error si la conexión es nil, el nodo no tiene boxModel visible, o el movimiento CDP falla. functions/browser/cdp_hover_ref.go

Ejemplo

// Activar un menú desplegable cuyo trigger tiene #ref=9999:
conn, _ := CdpConnect(9222)
err := CdpHoverRef(conn, 9999, MouseHumanOpts{})
if err != nil {
    log.Fatal(err)
}
// esperar a que el menú aparezca y re-percibir el outline

Cuando usarla

Tras page_perceive / render_ax_outline, cuando el agente necesita hacer hover sobre un elemento del #ref para revelar contenido oculto (menús, submenús, tooltips, dropdowns) — cierra el bucle percibir→actuar para interacciones hover. Seguir con otro page_perceive tras el hover para capturar el nuevo estado del DOM.

Gotchas

  • El #ref es un backendDOMNodeId, no el nodeId efímero del AX tree. Si la página recargó o navegó tras el snapshot, el ref puede estar muerto — re-percibir antes de actuar.
  • DOM.getBoxModel falla si el elemento no está en el DOM renderizado. El error describe la causa.
  • DOM.scrollIntoViewIfNeeded se invoca antes del cálculo de coordenadas pero su fallo se ignora (no fatal).
  • Solo mueve el ratón — no hace click. Para activar elementos que requieren click usar CdpClickRef.
  • Algunos menús hover requieren un pequeño time.Sleep o CdpWaitIdle tras el hover para que el DOM se actualice antes del siguiente page_perceive.