029dbf57bd
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.5 KiB
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. |
|
|
false | error_go_core | false |
|
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
#refes 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.getBoxModelfalla si el elemento no está en el DOM renderizado. El error describe la causa.DOM.scrollIntoViewIfNeededse 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.SleepoCdpWaitIdletras el hover para que el DOM se actualice antes del siguientepage_perceive.