Gui控件的识别方法和装置制造方法

文档序号:6637847阅读:334来源:国知局
Gui控件的识别方法和装置制造方法
【专利摘要】本发明公开了一种GUI控件的识别方法和装置,其中,GUI控件的属性信息被预先录制并具有唯一标识,属性信息包括:GUI控件的父窗口的标题和/或类名,GUI控件相对于父窗口的位置坐标以及GUI控件对应的第一图像。方法包括:根据属性信息中的父窗口标题和/或父窗口类名查找GUI控件所在的父窗口;根据GUI控件相对于父窗口的位置坐标,截取预设尺寸和位置的第二图像;计算第二图像与第一图像之间的相似度并根据相似度对GUI控件进行识别。根据该方案,能够准确识别出非标准控件,并且,这种识别方法可直接封装为接口,适合用于GUI自动化测试中。
【专利说明】GUI控件的识别方法和装置

【技术领域】
[0001] 本发明涉及计算机【技术领域】,具体涉及一种⑶I控件的识别方法和装置。

【背景技术】
[0002] 随着软件技术的飞速发展和软件规模的不断扩大,基于图形用户界面软件越来越 多,借助自动化软件测试工具来对GUI软件进行自动化测试获得了越来越广泛的应用。
[0003] 出于各方面的因素,越来越多的软件界面中开始使用自绘控件或第三方控件,然 而现阶段很多技术对GUI控件的识别存在很大的局限性,一般仅仅能识别Windows标准控 件,通过已有的Windows API接口获取界面元素的各种属性信息,而对于大部分第三方控件 识别率都不高,目前的一些GUI自动化测试框架也都存在开发用例成本高,不易于扩展,当 Gn界面发生变化时维护成本高等缺点,这给GUI自动化测试带来了更多的挑战。
[0004] 在GUI自动化测试中,很多软件体系都采用录制回放技术。这种技术要求测试者 通过鼠标和键盘的点击进行工作,脚本记录事件,然后以自动化测试的方式进行回放。记 录下来的测试脚本必须经过编辑和调试之后插入验证和检查点。产生的脚本通常是硬编 码,需要测试人员对脚本进行编辑以及参数化操作。同时,界面元素属性的任何变化都会影 响脚本的运行,有时甚至需要重新录制脚本。此外,还有基于数据驱动的GUI自动化测试, 但其仅支持脚本录制并要独立维护测试数据和对应关系,以及基于关键字的GUI自动化测 试,但其关键字的维护成本较高。


【发明内容】

[0005] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上 述问题的GUI控件的识别方法和装置。
[0006] 根据本发明的一个方面,提供了一种GUI控件的识别方法,其中,GUI控件的属性 信息被预先录制并具有唯一标识,属性信息包括:GUI控件的父窗口的标题和/或类名,GUI 控件相对于父窗口的位置坐标以及⑶I控件对应的第一图像;
[0007] 识别方法包括:
[0008] 根据属性信息中的父窗口标题和/或父窗口类名查找GUI控件所在的父窗口;
[0009] 根据⑶I控件相对于父窗口的位置坐标,截取预设尺寸和位置的第二图像;
[0010] 计算第二图像与第一图像之间的相似度并根据所述相似度对所述GUI控件进行 识别。
[0011] 根据本发明的另一方面,提供了一种⑶I控件的识别装置,其中,⑶I控件的属性 信息被预先录制并具有唯一标识;
[0012] 装置包括:
[0013] ⑶I控件录制模块,适于预先录制⑶I控件的属性信息,属性信息包括:GUI控件的 父窗口的标题和/或类名,Gn控件相对于父窗口的位置坐标以及⑶I控件对应的第一图 像;
[0014] 查找模块,适于根据属性信息中的父窗口标题和/或父窗口类名查找⑶I控件所 在的父窗口;
[0015] 图像截取模块,适于根据⑶I控件相对于父窗口的位置坐标,截取预设尺寸和位 置的第二图像;
[0016] 识别模块,适于根据⑶I控件相对于父窗口的位置坐标,截取预设尺寸和位置的 第二图像。
[0017] 根据本发明的GUI控件的识别方法和装置,预先录制能够唯一确定GUI控件的, 包含⑶I控件图形元素的图像、父窗口名称、⑶I控件相对于父窗口的坐标等的属性信息, 在识别过程中根据父窗口名称和坐标确定⑶I控件的位置,截取第二图像,根据第二图像 与属性信息中的包含GUI控件图形元素的图像来识别GUI控件。根据该方案,能够对标准 Gn控件和非标准的CTI控件进行识别,具有普遍的通用性。并且,上述测试方法易于封装 为接口函数,编写测试用例时,只需要根据待测的界面和测试流程,对导出接口进行重新组 合即可,从而实现了测试数据和测试脚本的分离。而且,用例的编写无需开发人员了解程序 开发知识,操作便捷。当界面变化时只需重新录制⑶I控件并重新组合导出接口即可,易于 维护,录制过程简单,只要将鼠标放在关注的图像位置,设定半径,就很容易自动获取这些 属性信息。
[0018] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够 更明显易懂,以下特举本发明的【具体实施方式】。

【专利附图】

【附图说明】
[0019] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0020] 图1示出了根据本发明一个实施例的GUI控件的识别方法的流程图;
[0021] 图2示出了根据本发明另一个实施例的GUI控件的识别方法的流程图;
[0022] 图3示出了根据本发明另一个实施例的GUI控件的识别方法的流程图;
[0023] 图4示出了根据本发明一个实施例的GUI控件的识别装置的结构框图;
[0024] 图5示出了根据本发明另一个实施例的GUI控件的识别装置的结构框图。

【具体实施方式】
[0025] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0026] 首先,简要介绍⑶I控件的识别和测试。⑶I是以图形方式显示的计算机操作用户 界面。一个最简单的手工⑶I识别和测试过程就是首先人眼识别⑶I界面上的某一个图形 元素,然后对此元素进行相应的鼠标或键盘操作,查看操作后的Gn界面是否符合预期。可 见GUI控件测试中涉及两个步骤,先要识别出GUI控件,然后对GUI控件进行预设的操作。 其中,对Gn控件的操作是容易模拟的,而Gn控件的自动识别是比较困难的。对于Windows 标准控件的识别较为容易,可以直接使用Windows API的方式,例如,使用FindWindow, EnumWindow,GetWindowText,GetWindowRect等函数获取GUI控件的句柄,文本,位置等信 息,进而实现对GUI控件的识别。
[0027] 对于非标准的⑶I控件,上述方法并不适用。这时,可以采用基于MSAA,基于坐标 的方法等进行GUI控件的识别。但上述方法有些较为繁琐,开发复杂,适用范围非常有限, 容易受到界面变化的影响,维护成本高。
[0028] 图1示出了根据本发明一个实施例的GUI控件的识别方法的流程图,如图1所示, 方法包括:
[0029] 步骤S110,预先录制⑶I控件的属性信息。
[0030] 录制的⑶I控件的属性信息包括:GUI控件的父窗口的标题和/或类名,⑶I控件 相对于父窗口的位置坐标以及⑶I控件对应的第一图像。
[0031] 以360浏览器的安装窗口中的⑶I控件为例,安装过程中首先涉及"开始安装"GUI 控件。该⑶I控件的父窗口标题就是安装窗口的窗口名,例如"360浏览器安装"。而⑶I 控件相对于父窗口的位置以及控件的图形元素一般是不变的。因此,根据上述录制的属性 信息能够唯一确定一个GUI控件。当然,也可以选择录制父窗口的类名,句柄等,或窗口名 称与类名的组合。
[0032] ⑶I控件的第一图像至少包括部分⑶I控件的图形元素,例如,对上述的"开始安 装"控件,其图形元素显示为一个带有"开始安装"字样的按钮。第一图像可通过截图方式 获取,截取带有完整的或一部分字样的图像。
[0033] ⑶I控件相对于父窗口位置的坐标可以是⑶I控件图像元素上任一点相对于父窗 口的坐标。例如,以父窗口的右下角作为坐标原点,以"开始安装"按钮中心位置的坐标作 为Gn控件的坐标。或者,录制Gn控件所在的坐标范围作为属性信息。
[0034] 对每个录制完成的GUI控件,赋予一个唯一的标识,根据标识即可找到该GUI控件 的属性信息。在测试用例和导出接口中对GUI控件的引用都可以用标识替代,实现了界面 元素名与测试内部对象名的分离。可选地,若GUI控件的名称在测试用例中唯一,则使用 GUI控件的名称作为所述唯一标识。
[0035] 可选地,录制的属性信息还包括:⑶I控件对应的图像半径;则⑶I控件对应的第 一图像是以⑶I控件相对于父窗口的位置坐标为中心,以⑶I控件对应的图像半径为半径 确定的图形区域内的图像。
[0036] 具体地,录制时,将鼠标移动到⑶I控件上,指定图像半径r后,程序自动捕获鼠标 相对于父窗口的坐标作为⑶I控件相对于父窗口的位置坐标,截取以鼠标位置(X,y)为中 心,图像半径r即(x-r,y-r,x+r,y+r)范围内的图像作为第一图像。本发明可以根据控件 大小选择不同的半径。
[0037] 步骤S120,根据属性信息中的父窗口标题和/或父窗口类名查找⑶I控件所在的 父窗口。
[0038] 在识别时,首先确定⑶I控件所在的父窗口已经打开。⑶I控件所在的父窗口一定 是一个可识别的标准控件,可通过FindWindow,EnumWindows等API进行查找。
[0039] 步骤S130,根据⑶I控件相对于父窗口的位置坐标,截取预设尺寸和位置的第二 图像。
[0040] 具体地,按照与录制相应的方式进行。根据属性信息中的GUI控件相对于父窗口 的坐标,自动将鼠标移动到录制时控件相对于父窗口的位置坐标处,然后截取以鼠标位置 坐标(x,y)为中心的半径为r的圆形图像作为第二图像,半径r即是录制的属性信息中的 控件对应的图像半径。或者截取(x-r,y-r,x+r,y+r)范围内的图像作为第二图像。
[0041] 步骤S140,计算所述第二图像与第一图像之间的相似度并根据所述相似度对所述 ⑶I控件进行识别。
[0042] 相似度大于预先设置的阈值时,认为第一图像和第二图像匹配,将鼠标当前位置 的第二图像区域作为待识别的⑶I控件。
[0043] 可选地,利用感知哈希算法为第一图像和第二图像分别生成指纹字符串;然后根 据指纹字符串计算所述相似度。
[0044] 具体地,利用感知哈希算法计算相似度包括如下过程:
[0045] 1)缩小尺寸。将第一图像和第二图像缩小到8X8的尺寸,总共64个像素。这一 步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图 片差异。2)简化色彩。将缩小后的图像,转为64级灰度。也就是说,所有像素点总共只有 64种颜色。3)分别计算第一、第二图像所有64个像素的灰度平均值。4)比较像素的灰度。 将每个像素的灰度与平均值进行比较,若大于或等于平均值,记为1 ;小于平均值,记为0。 5)第五步,计算哈希值。将上一步的比较结果组合在一起构成了一个64位的整数,这就是 这张图像的指纹。其中组合的次序并不重要,只要保证所有图像都采用同样次序就行了。在 得到指纹以后,就可以对比第一图像和第二图像,看看64位中有多少位是不一样的。在理 论上,这等同于计算"汉明距离"。如果不相同的数据位不超过5,就说明两张图像很相似; 如果大于10,就说明这是两张不同的图像。
[0046] 上述基于图像的⑶I控件识别方法,同样适用于标准⑶I控件,具有普遍通用性。
[0047] 根据本发明上述实施例提供的方法,预先录制能够唯一确定Gn控件的属性信 息,包含GUI控件图形元素的图像、控件所在的父窗口名称以及GUI控件相对于父窗口的坐 标等的属性信息,在识别过程中根据父窗口名称和坐标确定Gn控件的位置,截取第二图 像,根据第二图像与属性信息中的包含GUI控件图形元素的图像来识别GUI控件。根据该 方案,能够准确识别非标准的⑶I控件。并且,这种识别方法可直接封装为接口,适合用于 ⑶I自动化测试中。
[0048] 图2示出了根据本发明一个实施例的GUI控件的识别方法的流程图。本实施例的 方法将上述的基于图像的GUI控件识别方法应用于GUI控件的自动测试中。具体地,如图 2所示,方法包括如下步骤:
[0049] 步骤S210,预先录制的⑶I控件的属性信息。
[0050] 以对软件安装过程进行GUI测试为例,例如,安装过程中涉及两个GUI控件,"开始 安装"GUI控件和"安装完成"GUI控件。预期的功能是:用户点击开始安装后,进入安装完 成界面,点击安装完成后,界面消失。这两个控件都作为待识别的GUI控件。
[0051] 具体地,根据本实施例中的方法,录制GUI控件时,录制的不是简单的图像或复杂 的操作过程脚本,而是录制能够唯一识别此GUI控件的属性信息。
[0052] 对每个录制完成的GUI控件,赋予一个唯一的标识,根据标识即可找到该GUI控件 的属性信息。在测试用例和导出接口中对GUI控件的引用都可以用标识替代,实现了界面 元素名与测试内部对象名的分离。可选地,若GUI控件的名称在测试用例中唯一,则使用 GUI控件的名称作为所述唯一标识。
[0053] 步骤S220,预先设置多个导出接口。
[0054] 导出接口用于在测试用例中执行GUI测试步骤。如前文所述,每个GUI的测试步 骤通常包括两个部分,对Gn控件的识别以及对该Gn控件的操作。在编写用例前,将通用 的GUI控件的识别逻辑和/或操作逻辑封装在一个导出接口中。该导出接口表现为一个开 发人员封装的函数,可在实际的用例中直接调用。
[0055] 其中,识别逻辑可以是上一实施例所述的⑶I控件的识别逻辑,也可以是标准⑶I 控件的识别逻辑。例如,使用 FindWindow,EnumWindow,GetWindowText,GetWindowRect 等 系统API函数获取⑶I控件的句柄,文本,位置等信息,对⑶I控件进行识别,也可以是基于 MSAA的识别逻辑或本发明下文中介绍的基于图像的识别逻辑等。
[0056] 操作逻辑对识别出的GUI控件进行操作,包含但不仅限于点击和回车操作等。例 如,软件安装过程中,识别出当前界面内的GUI控件为"开始安装"按钮,模拟用户点击该 Gn控件,点击后进入下一界面"安装完成"。导出接口还可用于判断对⑶I控件的操作是 否成功,这通过判断操作后的界面是否符合预期完成。例如,点击"开始安装"按钮后,在界 面中查找"安装完成"按钮,若找到,判断"开始安装"这一测试步骤操作成功。
[0057] 具体地,在测试用例中被调用时,导出接口接收GUI控件的标识参数和/或GUI控 件的预设操作参数,标识参数就是步骤SllO中为每个GUI控件赋予的唯一标识。根据标识 参数找到预先录制的GUI控件的属性信息,利用属性信息识别GUI控件,然后,接收操作参 数执行对GUI控件的预设操作。当然,也可以将识别逻辑和操作逻辑分别封装在不同的导 出接口中,本领域技术人员可自行选择。
[0058] 作为示例,本实施例中给出三个导出接口,分别为:
[0059] 第一导出接口,接收⑶I控件的标识参数以识别⑶I控件;
[0060] 第二导出接口,接收第一⑶I控件标识参数,第二⑶I控件标识参数以及第一⑶I 控件的预设操作参数以识别并操作第一 GUI控件直到识别到第二GUI控件;操作包括鼠标 单击,双击,回车,tab切换等。
[0061] 第三导出接口,接收⑶I控件标识参数和预设操作参数以识别并操作⑶I控件直 到实现目标窗口,例如,点击控件直到该GUI控件消失,或直到能够查找到期望的目标窗 □。
[0062] 上述步骤S210和步骤S220在测试用例编写前执行。
[0063] 步骤S230,根据预定的⑶I测试过程,调用导出接口编写测试用例。
[0064] 具体地,按预定的GUI测试过程,根据测试过程中每个GUI的特征,调用合适的导 出接口,对导出接口进行重新的组合,编写测试用例。
[0065] 仍以上述的软件安装过程为例,可调用第二导出接口对"开始安装" Gn控件的测 试,调用第三导出接口对"安装完成"GUI控件的测试。分别将标识参数和预设操作参数传 递给第二导出接口和第三导出接口。
[0066] 步骤S240,执行编写的测试用例。
[0067] 导出接口接收参数后执行识别逻辑和操作逻辑。若编写的测试用例执行成功,GUI 测试过程通过。
[0068] 根据本发明上述实施例提供的方法,录制的Gn控件的属性信息作为测试执行过 程中所需的测试数据被提取出来,并将可能在多个测试用例中通用的测试步骤封装为导出 接口,在被调用时,导出接口读取预先录制的测试数据,这种方式实现了脚本与数据的分 离。在编写测试用例时,只需要根据待测的界面和测试流程,对导出接口进行重新组合即 可,从而实现了测试数据和测试脚本的分离。用例的编写无需了解程序开发知识,十分便 捷。界面变化时只需重新录制⑶I控件并重新组合导出接口即可,易于维护。
[0069] 图3示出了根据本发明另一个实施例的GUI控件的识别方法的流程图,该实施例 以360浏览器的安装过程中的⑶I界面为例,360浏览器安装界面中包括3个⑶I控件的识 别和操作,依次为:设置为默认浏览器、开始安装和开始体验。其中,方法包括如下步骤:
[0070] 步骤S310,分别录制设置为默认浏览器、开始安装、开始体验3个⑶I控件的属性 信息。
[0071] 本实施例中采用上文描述的基于图像的⑶I控件识别方法识别⑶I控件。
[0072] 具体地,依次录制设置为默认浏览器、开始安装、开始体验3个⑶I控件的控件名 称(name),父窗口类名或标题(ptitle),每个控件相对于父窗口的位置坐标(pos),控件对 应的图像的半径(radius),控件对应图像,以及控件的图像路径(imagepath)。以及预先设 定的第一图像和第二图像的相似度阈值,和图像路径imagepath。具体地,录制的信息如下 表所示。
[0073]

【权利要求】
1. 一种GUI控件的识别方法,所述GUI控件的属性信息被预先录制并具有唯一标识,所 述属性信息包括:GUI控件的父窗口的标题和/或类名,GUI控件相对于父窗口的位置坐标 以及⑶I控件对应的第一图像; 所述方法包括: 根据属性信息中的父窗口标题和/或父窗口类名查找GUI控件所在的父窗口; 根据⑶I控件相对于父窗口的位置坐标,截取预设尺寸和位置的第二图像; 计算所述第二图像与第一图像之间的相似度并根据所述相似度对所述GUI控件进行 识别。
2. 根据权利要求1所述的方法,其中,预先录制的所述属性信息还包括:GUI控件对应 的图像半径; 所述⑶I控件对应的第一图像是以所述⑶I控件相对于父窗口的位置坐标为中心,以 GUI控件对应的图像半径为半径确定的图形区域内的图像; 所述根据⑶I控件相对于父窗口的位置坐标截取预设尺寸和位置的第二图像进一步 为: 根据所述⑶I控件相对于父窗口的位置坐标,截取以所述⑶I控件相对于父窗口的位 置坐标为中心,以⑶I控件对应的图像半径为半径的图形区域内的第二图像。
3. 根据权利要求1或2所述的方法,其中,所述计算所述第二图像与第一图像之间的相 似度并根据所述相似度对所述GUI控件进行识别进一步包括: 利用感知哈希算法为第一图像和第二图像分别生成指纹字符串; 根据所述指纹字符串计算所述第二图像与第一图像之间的相似度; 若所述相似度大于预设阈值,将第二图像区域识别为GUI控件。
4. 根据权利要求1-3任一项所述的方法,其中,所述方法还包括: 预先设置一个或多个导出接口,将GUI控件的识别过程封装在所述一个或多个导出接 口中,或者,将GUI控件的识别过程和对GUI控件的预设操作逻辑封装在所述一个或多个导 出接口中; 其中,封装所述GUI控件的识别过程的导出接口用于接收GUI控件的标识参数,根据预 先录制的GUI控件的属性信息识别GUI控件; 封装所述GUI控件的识别过程和对GUI控件的预设操作逻辑的导出接口用于接收GUI 控件的标识参数和GUI控件的预设操作参数,根据预先录制的GUI控件的属性信息识别GUI 控件并执行对GUI控件的预设操作。
5. 根据权利要求4所述的方法,其中,所述导出接口包括: 第一导出接口,用于接收GUI控件的标识参数,根据预先录制的GUI控件的属性信息识 别GUI控件; 第二导出接口,接收第一 GUI控件标识参数,第二GUI控件标识参数以及第一 GUI控件 的预设操作参数以识别第一 GUI控件并对第一 GUI控件执行相应的操作直到在父窗口中识 别到第二GUI控件; 第三导出接口,接收GUI控件标识参数和预设操作参数以识别并对GUI控件执行相应 的操作直到实现目标窗口。
6. 根据权利要求5所述的方法,其中,所述方法还包括: 根据预定的GUI测试过程,向所述导出接口传递GUI控件的标识参数和/或GUI控件 的预设操作参数,通过调用所述导出接口编写测试用例;所述导出接口在一个测试用例中 执行GUI测试步骤,对一个或多个GUI控件进行自动测试; 执行所述编写的测试用例。
7. 根据权利要求6所述的方法,其中,所述导出接口还接收超时参数,指定调用该导出 接口的测试步骤的最长执行时间。
8. 根据权利要求6或7所述的方法,其中,所述方法还包括: 预先设置一个或多个功能接口;所述CTI功能接口中封装有已编写的测试用例中 的由所述导出接口执行的多个测试步骤; 所述方法还包括:根据预定的测试过程,调用所述CTI功能接口编写测试用例; 所述导出接口还包括:用于调用所述⑶I功能接口的第四导出接口。
9. 一种GUI控件的识别装置,其中,所述GUI控件的属性信息被预先录制并具有唯一标 识; 所述装置包括: GUI控件录制模块,适于预先录制GUI控件的属性信息,所述属性信息包括:GUI控件的 父窗口的标题和/或类名,Gn控件相对于父窗口的位置坐标以及⑶I控件对应的第一图 像; 查找模块,适于根据属性信息中的父窗口标题和/或父窗口类名查找⑶I控件所在的 父窗口; 图像截取模块,适于根据⑶I控件相对于父窗口的位置坐标,截取预设尺寸和位置的 第二图像; 识别模块,适于计算所述第二图像与第一图像之间的相似度并根据所述相似度对所述 ⑶I控件进行识别。
10. 根据权利要求9所述的装置,其中,预先录制的所述属性信息还包括:Gn控件对应 的图像半径; 所述⑶I控件对应的第一图像是以所述⑶I控件相对于父窗口的位置坐标为中心,以 GUI控件对应的图像半径为半径确定的图形区域内的图像; 所述图像截取模块进一步适于:根据所述⑶I控件相对于父窗口的位置坐标,截取以 所述⑶I控件相对于父窗口的位置坐标为中心,以⑶I控件对应的图像半径为半径的图形 区域内的第二图像。
【文档编号】G06F11/36GK104391797SQ201410747884
【公开日】2015年3月4日 申请日期:2014年12月9日 优先权日:2014年12月9日
【发明者】洪丽娜, 李珂 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1