我刚刚了解了狗尾,它允许从命令行枚举GUI应用程序的菜单项/小部件;例如(通过测试/自动化/道格塔蒂尔- Ubuntu):
%> 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但是,它使用了Gnome的辅助/“可访问性技术”(据我所见)。所以我想知道--是否有这样一个工具(至少可以枚举小部件的名称)在较低的级别上工作--例如在XWindows级别上?
我猜想(但不知道) XWindows本身并没有提供任何标准的小部件框架,因此,很难编写一个工具来查询XWindows级别的GUI小部件名称;这是正确的吗?(我想象像xdotool或wmctrl这样的东西,但它们都不能探测“在”GUI应用程序中)。
如果是这样的话-是否有一个工具可以与大多数桌面环境框架(Gnome,KDE .)一起工作?它可以查询/列出正在运行的GUI应用程序的小部件名称,但不需要使用可访问性技术层?
发布于 2013-10-20 01:58:06
20年前,答案应该是社论。经典的X窗口程序使用了X工具包,它提供了定义小部件层次结构并通过资源配置它的标准方法。许多使用X工具包的程序实现了Editres协议,该协议允许应用程序查询另一个应用程序的小部件树和资源值。
像Gtk和Qt这样的现代小部件工具包不支持X资源,更不用说Editres协议了。所以你运气不好。确实有人提议使用Gtk+中的编辑支持,但补丁从未被采用,即使库有必要的扩展,应用程序也必须包括额外的支持。对于Qt (即KDE应用程序),这个来自Qt邮件列表的旧帖子建议使用KD遗嘱执行人,但我不知道它是否能真正做到这一点。
https://unix.stackexchange.com/questions/96570
复制相似问题