c165f2f788
Agrega 19 issues técnicas documentando funcionalidades implementadas y pendientes. Issues completadas (movidas a dev/issues/completed/): - 001-conversor-web-markdown.md - 002-accessibility-tree.md - 003-gestion-cookies-perfil.md - 004-gestion-extensiones-chrome.md - 005-eliminar-timeouts-innecesarios.md Issues implementadas: - 006-manejo-tabs-ventanas.md - 016-manejo-iframes.md - 017-actions-api.md - 018-file-uploads.md - 019-expected-conditions-mejoradas.md Issues pendientes (media prioridad): - 007-alert-prompt-confirm-handling.md - 008-screenshot-elementos-especificos.md - 009-pdf-generation.md - 010-device-emulation-completo.md - 011-downloads-handling.md Issues pendientes (baja prioridad / avanzado): - 012-browser-contexts-multi-sesion.md - 013-video-recording.md - 014-network-mocking-avanzado.md - 015-geolocation-permissions.md Incluye también dev/NUEVAS_FUNCIONALIDADES.md con resumen completo. Directorio: dev/
2.6 KiB
2.6 KiB
Issue #002: Recuperación de Accessibility Tree
Tipo: Enhancement Prioridad: Alta Estado: Pendiente
Descripción
Implementar método para obtener el árbol de accesibilidad (Accessibility Tree) de la página usando Chrome DevTools Protocol.
Funcionalidad deseada
- Obtener accessibility tree completo vía CDP
- Listar roles ARIA de elementos (button, link, heading, etc.)
- Obtener nombres accesibles de elementos
- Extraer propiedades de accesibilidad
- Útil para que LLMs entiendan estructura semántica de página
- Formato JSON estructurado y fácil de parsear
- Opción para filtrar por tipos de nodos
Implementación técnica
Archivo sugerido
pkg/browser/accessibility.go
CDP Domain
Accessibility.getFullAXTree - https://chromedevtools.github.io/devtools-protocol/tot/Accessibility/
API propuesta
// GetAccessibilityTree obtiene el árbol de accesibilidad de la página
func (b *Browser) GetAccessibilityTree(ctx context.Context, opts *AccessibilityOptions) (*AXTree, error)
type AccessibilityOptions struct {
Depth int // Profundidad máxima del árbol (0 = ilimitado)
FilterRoles []string // Roles a incluir (ej: ["button", "link", "heading"])
}
type AXTree struct {
Nodes []AXNode `json:"nodes"`
}
type AXNode struct {
NodeID string `json:"nodeId"`
Role string `json:"role"`
Name string `json:"name"`
Description string `json:"description"`
Value string `json:"value,omitempty"`
Properties map[string]string `json:"properties,omitempty"`
Children []string `json:"children,omitempty"` // IDs de hijos
}
Comandos CDP necesarios
// 1. Habilitar dominio Accessibility
{"method": "Accessibility.enable"}
// 2. Obtener árbol completo
{"method": "Accessibility.getFullAXTree", "params": {}}
// O para un nodo específico:
{"method": "Accessibility.getPartialAXTree", "params": {"nodeId": ...}}
Casos de uso
- LLMs pueden entender mejor la estructura de la página
- Identificar elementos interactuables automáticamente
- Testing de accesibilidad
- Generar selectores semánticos
- Scraping inteligente basado en roles ARIA
Ventajas sobre DOM normal
- Información semántica rica
- Roles ARIA explícitos
- Nombres accesibles computados
- Estructura más simple que DOM HTML
- Ideal para navegación por agentes autónomos
Referencias
- CDP Accessibility Domain: https://chromedevtools.github.io/devtools-protocol/tot/Accessibility/
- WAI-ARIA Roles: https://www.w3.org/TR/wai-aria-1.2/#role_definitions
- Chrome AX Tree Inspector: chrome://accessibility