
Acabo de enterarme decola de perroy puede permitir la enumeración de elementos de menú/widgets de una aplicación GUI desde la línea de comando; por ejemplo (a través dePruebas/Automatización/DogtailTutorial - Ubuntu Wiki):
%> python
>>> from dogtail import tree
>>> gcalctool = tree.root.application('gcalctool')
>>> gcacltool.dump()
# You'll see something like:
{"gcalctool" application}
Node roleName='frame' name='Calculator - Scientific' description=''
Node roleName='filler' name='' description=''
Node roleName='menu bar' name='' description=''
Node roleName='menu' name='Calculator' description='' text='Calculator'
click
Node roleName='tear off menu item' name='' description='' text=''
click
Node roleName='menu item' name='Quit' description='' text='Quit'
click
Node roleName='menu item' name='Empty' description='' text='Empty'
click
Node roleName='menu' name='Edit' description='' text='Edit'
click
Sin embargo, utiliza (hasta donde puedo ver) "tecnologías de accesibilidad" de asistencia de Gnome Desktop. Entonces me preguntaba: ¿existe alguna herramienta (que pueda al menos enumerar nombres de widgets) que funcione en un nivel inferior, por ejemplo, en el nivel XWindows?
Supongo (pero no lo sé) que XWindows no ofrece en sí mismo ningún marco de widget estándar y, por lo tanto, sería difícil escribir una herramienta para consultar los nombres de los widgets GUI en el nivel de X-Windows; ¿es esto correcto? (Me imagino algo como xdotool
o wmctrl
, pero ninguno de estos puede sondear "dentro" de la aplicación GUI).
Si es así, ¿existe alguna herramienta que pueda funcionar con la mayoría de los entornos de escritorio (Gnome, KDE...) que pueda consultar/enumerar los nombres de los widgets de una aplicación GUI en ejecución, pero sin utilizar la capa de tecnologías de accesibilidad?
Respuesta1
Hace veinte años, la respuesta habría sidoeditores. Los programas clásicos de X Window utilizaban elkit de herramientas, que proporciona una forma estándar de definir una jerarquía de widgets y configurarla medianterecursos. Muchos programas que utilizan el kit de herramientas X implementan el protocolo Editres que permite a las aplicaciones consultar el árbol de widgets y los valores de recursos de otra aplicación.
Los kits de herramientas de widgets modernos como Gtk y Qt no admiten recursos X, y mucho menos el protocolo Editres. Entonces no tienes suerte. Alguien propusoSoporte de edición en Gtk+pero el parche nunca fue adoptado y una aplicación tendría que incluir soporte adicional incluso si la biblioteca tuviera las extensiones necesarias. Para Qt (es decir, aplicaciones KDE),esta publicación antigua de una lista de correo de QtsugiereEjecutor de KD, pero no tengo idea de si realmente puede hacer esto.