Files
egutierrez 029dbf57bd feat(core): auto-commit con 10 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 13:20:36 +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
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.