[发明专利]图形用户界面软件功能获取方法及装置有效
申请号: | 201510104809.3 | 申请日: | 2015-03-10 |
公开(公告)号: | CN104679519B | 公开(公告)日: | 2018-05-15 |
发明(设计)人: | 于秀山;刘然;于长钺 | 申请(专利权)人: | 于秀山 |
主分类号: | G06F8/38 | 分类号: | G06F8/38 |
代理公司: | 北京众合诚成知识产权代理有限公司 11246 | 代理人: | 龚燮英 |
地址: | 100036*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 图形 用户界面 软件 功能 获取 方法 装置 | ||
1.一种图形用户界面软件功能获取方法,其特征在于,包括:
S1、利用Windows操作系统提供的微软用户交互自动化MS-UIA框架,将被测软件主界面划分为菜单类软件和对话框类软件,对被测软件的用户界面进行分析,针对菜单类软件获取主界面菜单项,针对对话框类软件获取主界面按钮控件;
S2、通过自动触发菜单项和按钮控件的点击事件,得到次级菜单或次级对话框窗口,依此方式,递归找出被测软件所有层级的菜单类和对话框类控件中包含的元素以及采用递归方法分别获取菜单层级关系和窗口调用关系;
S3、通过分析菜单层级关系和对话框窗口调用关系,得出被测软件的功能组成结构,并生成功能组成图;
所述步骤S1进一步包括:
通过当前窗口句柄构建窗口中控件树的根结点,使用UIA框架提供的TreeWalker类,采用深度遍历算法递归构造以当前窗口为根结点的控件树,从而获取窗口中所有控件及其信息;
所述采用深度遍历算法递归构造以当前窗口为根结点的控件树,进一步包括:
将被测程序的主窗口参数rootElement作为遍历的起点;
遍历时首先找到rootElement的第一个子结点,如果该结点是菜单控件,则需要遍历当前结点的所有子结点,这时,先将菜单展开,然后调用展开后的子结点的Invoke控件模式,其他结点类型在这里不做处理;
递归遍历当前结点的子结点控件,处理完子结点控件后,处理当前结点的兄弟结点;
所述菜单或对话框的层级关系获取,进一步包括:
获得到被测软件主界面窗口的所有控件及其信息,该信息以树形结构展示;
根据控件类型ControlType属性进行过滤得到控件类型为菜单或对话框的界面元素;
当控件类型为菜单界面元素时,获取主菜单,通过调用invoke控件模式触发GUI事件,模拟人工点击菜单项的操作,递归查找当前菜单的子菜单项,并保存主菜单与子菜单的层级关系;
当控件类型为对话框界面元素时,获取主窗口,通过调用invoke控件模式触发GUI事件,模拟人工点击各按钮的操作,递归查找当前窗口的子窗口,以获取窗口间的调用关系,并将窗口间的调用关系保存为主窗口与子窗口的层级关系;
所述递归查找当前菜单的子菜单项,并保存主菜单与子菜单的层级关系,进一步包括:
传入主窗口结点,并获取第一个孩子结点;判断该结点是否为空,若该结点为非空,则进一步判断该结点是否为菜单,若该结点是菜单,进入Invoke控件模式,并递归遍历子结点,若该结点不是菜单,递归遍历子结点;若该结点不是菜单,递归遍历子结点;递归之后,处理兄弟结点;若该结点为空则结束;
所述递归查找当前窗口的子窗口,以获取窗口间的调用关系,并将窗口间的调用关系保存为主窗口与子窗口的层级关系,进一步包括:
传入主窗口结点;获取第一个孩子结点;判断该结点是否为空,若该结点为非空,进一步判断该结点是否为按钮,若该结点是按钮,则进入Invoke控件模式,并递归遍历子结点,随后处理兄弟结点;若该结点不是按钮则结束;若该结点为空则结束。
2.根据权利要求1所述的方法,其特征在于,所述S3进一步包括:
菜单层级调用关系链表和窗口调用链表中包含了软件的功能要素,从链表的起始结点到某个终止结点构成了软件的一个功能,链表的所有路径构成了软件所具有的功能;
在分别获取了菜单和窗口及其层级调用关系之后,先找到功能的所有子结点,通过回溯找到从该子结点向上的功能调用关系,通过遍历菜单层级调用关系链表和窗口调用链表,并将遍历结果分别转换为文本显示方式和图形显示方式,以得到被测软件的所有功能和功能组成结构图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于于秀山,未经于秀山许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510104809.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种真空弱离子束流收集放大装置
- 下一篇:一种太阳能板系统