1.本发明涉及互联网技术领域,尤其涉及一种移动应用图形用户界面变更的识别方法、系统及装置。
背景技术:
2.随着智能终端的普及,移动应用已经成为最重要的软件领域之一,越来越多的用户和平台对移动应用的软件质量提出了更高的要求。在安卓环境中,有两个逻辑结构组成了移动应用的gui(图形用户界面),一个是gui组件,另一个是gui容器。gui组件有多种不同的类型(如文本框、按钮、图片),每一种类型的组件都有其特定的功能,而每个组件都有一个边界框,以用于规定组件所占的区域。gui容器主要用于为gui提供空间结构,并定义有关背景或画布的样式细节,gui组件则在这些背景或画布上呈现。当gui组件和gui容器组合在一起时,就构成了gui层次,它通常为根树的形式,其中较小的组件和容器存在于一个单独的容器中,而这个容器就是gui层次的根。
3.移动应用的gui通常在文件中定义,与应用程序的主逻辑分离,因此gui的开发影响到gui的最终呈现。目前有一些工作致力于在移动应用的迭代版本中识别和总结gui的变更,以帮助开发人员对gui的相关代码进行验证。这些方法大多都基于计算机视觉技术,它们通过图片的视觉特征,将不同版本中的gui组件进行匹配和对比,从而找出变化。然而,现代移动应用的gui中常常会包含动态内容(如新闻文本),这些动态内容导致的gui变更应当被认为是合理的,这时使用基于计算机视觉的方法会产生较多的误报,将合理的gui变更误认为是应用版本迭代所致,识别精度不高。
技术实现要素:
4.本发明提供了一种移动应用图形用户界面变更的识别方法、系统及装置,解决了现有移动应用gui变更识别方法精度不高的技术问题。
5.本发明第一方面提供一种移动应用图形用户界面变更的识别方法,包括:
6.多次采集gui页面对应不同版本类别的元数据,所述版本类别包括基础版本和更新版本;
7.对各所述元数据进行解析,生成各所述元数据的gui组件的xpath列表,所述xpath列表包括基于绝对路径的第一xpath;
8.根据所述第一xpath,将同一版本类别的两相邻采集时间所对应的gui页面中的gui组件进行匹配,将匹配失败的gui组件标记为a类组件;
9.对所述a类组件进行聚类,判断所述a类组件所在簇是否仅存在于所述基础版本或仅存在于所述更新版本,若是,将所述a类组件所在簇的所有gui组件的变更判定为版本迭代导致的变更,输出对应的第一识别结果。
10.根据本发明第一方面的一种能够实现的方式,所述输出对应的第一识别结果,包括:
11.若所述a类组件所在簇仅存在于所述基础版本,输出所述a类组件所在簇的所有gui组件为删除的组件的识别结果;
12.若所述a类组件所在簇仅存在于所述更新版本,输出所述a类组件所在簇的所有gui组件为增加的组件的识别结果。
13.根据本发明第一方面的一种能够实现的方式,所述方法还包括:
14.若所述a类组件所在簇同时存在于所述基础版本和所述更新版本,将所述a类组件所在簇的所有gui组件的变更判定为合理变更,输出对应的第二识别结果。
15.根据本发明第一方面的一种能够实现的方式,所述xpath列表还包括基于属性的第二xpath,所述方法还包括:
16.对于匹配成功的gui组件,若gui组件包含动态属性,将此gui组件标记为b类组件,否则标记为c类组件;
17.根据所述第二xpath,将所述b类组件在所述基础版本和更新版本之间进行组件匹配;若所述b类组件仅存在于所述基础版本,将所述b类组件判定为删除的组件;若所述b类组件仅存在于所述更新版本,将所述b类组件判定为增加的组件;若所述b类组件同时存在于所述基础版本和所述更新版本,判断所述b类组件的静态属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述b类组件判定为修改的组件;
18.根据所述第二xpath,将所述c类组件在所述基础版本和更新版本之间进行组件匹配,若所述c类组件仅存在于所述基础版本,将所述c类组件判定为删除的组件;若所述c类组件仅存在于所述更新版本,将所述c类组件判定为增加的组件;若所述c类组件同时存在于所述基础版本和所述更新版本,判断所述c类组件的所有属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述c类组件判定为修改的组件。
19.根据本发明第一方面的一种能够实现的方式,所述生成各所述元数据的gui组件的xpath列表,包括:
20.根据改进的基于元素属性的构造方法生成所述基于属性的第二xpath;
21.其中,所述改进的基于元素属性的构造方法为:
22.若一个元素无法用自身属性值来构造唯一的xpath,则从其父节点开始递归地去查找祖先节点,从其最近可精确定位的祖先节点的子孙节点中,获取对应所述元素的唯一属性值,将该元素的xpath表示为其最近可精确定位的祖先节点的xpath加上所述唯一属性值。
23.本发明第二方面提供一种移动应用图形用户界面变更的识别系统,包括:
24.元数据采集模块,用于多次采集gui页面对应不同版本类别的元数据,所述版本类别包括基础版本和更新版本;
25.元数据解析模块,用于对各所述元数据进行解析,生成各所述元数据的gui组件的xpath列表,所述xpath列表包括基于绝对路径的第一xpath;
26.第一匹配模块,用于根据所述第一xpath,将同一版本类别的两相邻采集时间所对应的gui页面中的gui组件进行匹配,将匹配失败的gui组件标记为a类组件;
27.第一识别模块,用于对所述a类组件进行聚类,判断所述a类组件所在簇是否仅存在于所述基础版本或仅存在于所述更新版本,若是,将所述a类组件所在簇的所有gui组件的变更判定为版本迭代导致的变更,输出对应的第一识别结果。
28.根据本发明第二方面的一种能够实现的方式,所述第一识别模块包括:
29.第一识别单元,用于在所述a类组件所在簇仅存在于所述基础版本时,输出所述a类组件所在簇的所有gui组件为删除的组件的识别结果;
30.第二识别单元,用于在所述a类组件所在簇仅存在于所述更新版本时,输出所述a类组件所在簇的所有gui组件为增加的组件的识别结果。
31.根据本发明第二方面的一种能够实现的方式,所述第一识别模块还用于:
32.若所述a类组件所在簇同时存在于所述基础版本和所述更新版本,将所述a类组件所在簇的所有gui组件的变更判定为合理变更,输出对应的第二识别结果。
33.根据本发明第二方面的一种能够实现的方式,所述xpath列表还包括基于属性的第二xpath,所述系统还包括:
34.标记模块,用于对于匹配成功的gui组件,若gui组件包含动态属性,将此gui组件标记为b类组件,否则标记为c类组件;
35.第二识别模块,用于根据所述第二xpath,将所述b类组件在所述基础版本和更新版本之间进行组件匹配;若所述b类组件仅存在于所述基础版本,将所述b类组件判定为删除的组件;若所述b类组件仅存在于所述更新版本,将所述b类组件判定为增加的组件;若所述b类组件同时存在于所述基础版本和所述更新版本,判断所述b类组件的静态属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述b类组件判定为修改的组件;
36.第三识别模块,用于根据所述第二xpath,将所述c类组件在所述基础版本和更新版本之间进行组件匹配,若所述c类组件仅存在于所述基础版本,将所述c类组件判定为删除的组件;若所述c类组件仅存在于所述更新版本,将所述c类组件判定为增加的组件;若所述c类组件同时存在于所述基础版本和所述更新版本,判断所述c类组件的所有属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述c类组件判定为修改的组件。
37.根据本发明第二方面的一种能够实现的方式,所述元数据解析模块包括第二xpath生成单元,所述第二xpath生成单元用于:
38.根据改进的基于元素属性的构造方法生成所述基于属性的第二xpath;
39.其中,所述改进的基于元素属性的构造方法为:
40.若一个元素无法用自身属性值来构造唯一的xpath,则从其父节点开始递归地去查找祖先节点,从其最近可精确定位的祖先节点的子孙节点中,获取对应所述元素的唯一属性值,将该元素的xpath表示为其最近可精确定位的祖先节点的xpath加上所述唯一属性值。
41.本发明第三方面提供了一种移动应用图形用户界面变更的识别装置,包括:
42.存储器,用于存储指令;其中,所述指令为可实现如上任意一项能够实现的方式所述的移动应用图形用户界面变更的识别方法的指令;
43.处理器,用于执行所述存储器中的指令。
44.本发明第四方面一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一项能够实现的方式所述的移动应用图形用户界面变更的识别方法。
45.从以上技术方案可以看出,本发明具有以下优点:
46.本发明对gui页面对应不同版本类别的元数据进行多次采集,并对采集的元数据进行解析,构造各元数据对应gui组件的xpath,并基于xpath算法来进行gui组件间的匹配,根据匹配结果对版本迭代所导致的gui变更进行识别;本发明能够避免将合理的动态变化导致的gui变更识别为版本迭代所导致的gui变更,进一步提高gui变更识别的精确性。
附图说明
47.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
48.图1为本发明一个可选实施例提供的一种移动应用图形用户界面变更的识别方法的流程图;
49.图2为本发明一个可选实施例提供的一种移动应用图形用户界面变更的识别系统的结构示意图。
50.附图说明:
51.1-元数据采集模块;2-元数据解析模块;3-第一匹配模块;4-第一识别模块。
具体实施方式
52.本发明实施例提供了一种移动应用图形用户界面变更的识别方法、系统及装置,用于解决现有移动应用gui变更识别方法精度不高的技术问题。
53.为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
54.为更好地理解本发明,对本发明下述实施例所述的各术语进行如下解释:
55.gui页面:移动设备中所呈现的应用画面;
56.gui元文件:用以定义gui的文件;
57.xml:一种扩展标记语言,被设计用来传输和存储数据;
58.xpath:一门在xml文档中查找信息的语言,它的作用就是在xml文档中通过路径或属性来查找元素。
59.请参阅图1,图1示出了本发明实施例提供的一种移动应用图形用户界面变更的识别方法的流程图。
60.本发明实施例提供一种移动应用图形用户界面变更的识别方法,包括步骤s1-s4。
61.步骤s1,多次采集gui页面对应不同版本类别的元数据,所述版本类别包括基础版本和更新版本。
62.具体地,给定移动应用的两个版本,一个为基础版本,另一个为更新版本。本发明实施例首先使用广度优先搜索对移动应用的基础版本进行一次遍历,并且在遍历的过程中
记录点击事件序列以及gui页面转移图。在采集了gui元文件(其中包含了gui页面的元数据)之后,进一步在移动应用的基础版本以及更新版本上重放点击事件序列,再次对gui页面的元数据进行采集。如此,对于一个gui页面,将搜集到它对应于基础版本以及更新版本的多个元数据。其中,每个版本的每个gui页面的元数据至少搜集两次。
63.步骤s2,对各所述元数据进行解析,生成各所述元数据的gui组件的xpath列表,所述xpath列表包括基于绝对路径的第一xpath。
64.xpath可使用绝对路径和相对路径来进行元素定位,绝对路径描述了从xml文件的根节点到目标节点的路径,而相对路径则描述了从任意节点到目标节点的路径通过元素和属性进行定位。本发明实施例中采用绝对路径作为该第一xpath。
65.步骤s3,根据所述第一xpath,将同一版本类别的两相邻采集时间所对应的gui页面中的gui组件进行匹配,将匹配失败的gui组件标记为a类组件。
66.在步骤s1中,进行元数据的采集时,本发明对移动应用的每个版本的gui页面都进行了多次搜集,目的是为了判断并找出哪些gui组件会在非版本迭代时(即单个版本中)发生动态变化,在之后进行gui变更识别时,这些动态变化将被认为是合理的。
67.本发明实施例通过步骤s3来找出这些动态变化。具体实施时,对每个gui页面,都将它的多个元数据进行对比,从而判断该gui页面中gui组件的状态在单个版本中是否会发生变化。由于移动应用单个版本中的gui页面层次结构不会发生变化,故对于gui页面不同元数据中的gui组件,本发明实施例使用了绝对路径构造的第一xpath来进行匹配。
68.步骤s4,对所述a类组件进行聚类,判断所述a类组件所在簇是否仅存在于所述基础版本或仅存在于所述更新版本,若是,将所述a类组件所在簇的所有gui组件的变更判定为版本迭代导致的变更,输出对应的第一识别结果。
69.在一种能够实现的方式中,所述输出对应的第一识别结果,包括:
70.若所述a类组件所在簇仅存在于所述基础版本,输出所述a类组件所在簇的所有gui组件为删除的组件的识别结果;
71.若所述a类组件所在簇仅存在于所述更新版本,输出所述a类组件所在簇的所有gui组件为增加的组件的识别结果。
72.在一种能够实现的方式中,所述方法还包括:
73.若所述a类组件所在簇同时存在于所述基础版本和所述更新版本,将所述a类组件所在簇的所有gui组件的变更判定为合理变更,输出对应的第二识别结果。
74.在移动应用单一版本中也可能存在gui组件的增删,本发明上述实施例实现了对该类gui组件(a类组件)的识别。通过将此类gui组件进行聚类,且在进行gui变更识别时,不对a类组件进行匹配(即不判断a类组件是否发生了数量上的增减),而直接判断该a类组件所在聚类是否同时存在于移动应用的基础版本和更新版本中。倘若该聚类在移动应用的基础版本以及更新版本中都存在,则将此聚类中包含的gui组件的增删变化视为合理的,否则将该聚类中所有的gui组件找出,视为删减或者增加组件。本发明实施例能够避免将合理的动态变化导致的gui变更识别为版本迭代所导致的gui变更,进一步提高gui变更识别的精确性。
75.在一种实施方式中,所述对所述a类组件进行聚类,包括:
76.确定两所述a类组件的相似度,若相似度不小于0.8,归为同一个簇。
77.其中,确定两所述a类组件的相似度的方法为:
78.若两个gui组件所在gui结构树上的层次不同,相似度为0;
79.若两个gui组件所在gui结构树上的层次相同:
80.如果两个gui组件的id都不为空,且相等,那么相似度为1;
81.如果两个组件的id不全为空,且不相等,那么相似度为0;
82.如果两个组件的id都为空:
83.初始化socre=0;
84.如果两个组件的横坐标或者纵坐标相等,那么scroe=score+0.4;
85.如果两个组件的长度或者宽度相等,那么score=score+0.4;
86.输出相似度为score的最终值。
87.本发明实施例的聚类方法简单便捷,易于实施。
88.在一种能够实现的方式中,所述xpath列表还包括基于属性的第二xpath,所述方法还包括:
89.对于匹配成功的gui组件,若gui组件包含动态属性,将此gui组件标记为b类组件,否则标记为c类组件;
90.根据所述第二xpath,将所述b类组件在所述基础版本和更新版本之间进行组件匹配;若所述b类组件仅存在于所述基础版本,将所述b类组件判定为删除的组件;若所述b类组件仅存在于所述更新版本,将所述b类组件判定为增加的组件;若所述b类组件同时存在于所述基础版本和所述更新版本,判断所述b类组件的静态属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述b类组件判定为修改的组件;
91.根据所述第二xpath,将所述c类组件在所述基础版本和更新版本之间进行组件匹配,若所述c类组件仅存在于所述基础版本,将所述c类组件判定为删除的组件;若所述c类组件仅存在于所述更新版本,将所述c类组件判定为增加的组件;若所述c类组件同时存在于所述基础版本和所述更新版本,判断所述c类组件的所有属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述c类组件判定为修改的组件。
92.根据本发明实施例的标记方法可知,该b类组件为存在属性值变化的非增删组件,而c类组件为所有属性值不变的增删组件。本发明实施例通过对b类组件和c类组件进行进一步识别,实现了对增加的组件、删除的组件及修改的组件这三种gui变更类型的识别,方法简单便捷。
93.其中,通过对比gui组件的若干属性来判断这些属性是否发生变化,如果属性发生了变化,则标记该属性为动态属性,否则标记为静态属性。
94.由于本发明的目的是对移动应用的gui界面变更进行识别,在一种实施方式中,本发明实施例选择与gui有关的属性进行标记,这些属性如表1所示:
95.表1
[0096][0097]
由于在移动应用的单个版本中,gui页面的层次结构不会发生变化,故可使用绝对路径构造的xpath进行gui组件匹配;而对于移动应用的基础版本以及更新版本而言,两者内部的gui页面的层次结构可能发生较多的变化,此时若使用绝对路径构造的xpath进行gui组件匹配会遇到困难,因此,本发明上述实施例,根据第二xpath来进行移动应用基础版本和更新版本之间的gui组件匹配。由于移动应用的基础版本和更新版本中的gui页面的gui层次结构可能会发生变化,且gui组件属性值在gui页面中的唯一性也可能发生变化,故在构造gui组件的第二xpath时,本发明将每个组件所有可用来唯一定位的第二xpath都存储在了一个列表中。假设有一个gui页面g,g在移动应用的基础版本中有一个gui组件为e1,在移动应用的更新版本中有一个gui组件为e2,那么gui组件的匹配方式为:遍历e1和e2的xpath列表,如果e1和e2的xpath列表有交集,那么e1和e2则为移动应用基础版本和更新版本之间的一对gui组件匹配对。
[0098]
进一步地,如果有的gui组件根据xpath列表仍然无法进行匹配,则采取坐标匹配的方法尝试为未匹配的gui组件在其相对立的版本中找到一个匹配。若以上两种匹配方法都失败,则说明这些未匹配的gui组件为移动应用基础版本删除的gui组件或者更新版本增加的gui组件。
[0099]
在一种实施方式中,给出两个gui组件的集合x1和x2,那么对集合x1和x2中的元素进行匹配的方法为:
[0100]
遍历x1中的元素,利用下列公式计算这个元素与集合x2中每个未匹配元素的相似得分,x2中与这个元素相似得分最高的元素被认为是这个元素的匹配:
[0101]
s=(|x
1-x2|+|y
1-y2|+|w
1-w2|+|h
1-h2|)
[0102]
式中,s表示相似得分,x1,y1,w1,h1分别为元素e1的横坐标、纵坐标、宽度以及高度,x2,y2,w2,h2分别为元素e2的横坐标、纵坐标、宽度以及高度。
[0103]
在一种能够实现的方式中,所述生成各所述元数据的gui组件的xpath列表,包括:
[0104]
根据改进的基于元素属性的构造方法生成所述基于属性的第二xpath;
[0105]
其中,所述改进的基于元素属性的构造方法为:
[0106]
若一个元素无法用自身属性值来构造唯一的xpath,则从其父节点开始递归地去查找祖先节点,从其最近可精确定位的祖先节点的子孙节点中,获取对应所述元素的唯一属性值,将该元素的xpath表示为其最近可精确定位的祖先节点的xpath加上所述唯一属性值。
[0107]
现有技术中,xpath可以根据元素属性进行定位,如果一个元素的某个属性的值在
整个xml文档中是唯一的话,那么xpath可以直接表示为这个属性的值(单属性表示)。如果一个元素的单个属性值不是唯一的,但其多个属性值的组合是唯一的,那么xpath可以表示为多个属性值的组合(多属性组合表示)。如果一个元素的所有属性值的组合依旧不是唯一的,即无法精确定位该元素,那么可以从其父节点开始递归地去查找祖先节点,直至找到一个祖先节点是可以精确定位的,那么该元素的xpath为其最近可精确定位的祖先节点的xpath加上该祖先节点到该元素的路径(祖先节点表示),否则元素无法通过元素属性构造xpath。为了使得xpath的定位更加精确有效,本发明实施例对现有根据元素属性构造xpath的方法进行了改进。
[0108]
例如,通过现有方法得到的现有xpath为:
[0109]
i=[[lineralayout@id=
′
12]/linearlayout[1]/textview@id=
′
b1
′
]
[0110]
该xpath中包含了元素索引即linearlayout[1],该索引将随着gui层次的变化而变化,因此使用包含有索引的xpath进行gui组件匹配,无法保证匹配的正确性,本发明实施例的改进的基于元素属性的构造方法构造的xpath为:i=[[linearlayout@id=
′
12]/textview@id=
′
b1
′
]。
[0111]
进一步地,本发明实施例的方法还包括:
[0112]
根据识别结果生成相应的gui变更识别报告。
[0113]
本发明还提供了一种移动应用图形用户界面变更的识别系统。
[0114]
请参阅图2,图2示出了本发明实施例提供的一种移动应用图形用户界面变更的识别系统的结构示意图。
[0115]
本发明实施例的一种移动应用图形用户界面变更的识别系统,包括:
[0116]
元数据采集模块1,用于多次采集gui页面对应不同版本类别的元数据,所述版本类别包括基础版本和更新版本;
[0117]
元数据解析模块2,用于对各所述元数据进行解析,生成各所述元数据的gui组件的xpath列表,所述xpath列表包括基于绝对路径的第一xpath;
[0118]
第一匹配模块3,用于根据所述第一xpath,将同一版本类别的两相邻采集时间所对应的gui页面中的gui组件进行匹配,将匹配失败的gui组件标记为a类组件;
[0119]
第一识别模块4,用于对所述a类组件进行聚类,判断所述a类组件所在簇是否仅存在于所述基础版本或仅存在于所述更新版本,若是,将所述a类组件所在簇的所有gui组件的变更判定为版本迭代导致的变更,输出对应的第一识别结果。
[0120]
在一种能够实现的方式中,所述第一识别模块4包括:
[0121]
第一识别单元,用于在所述a类组件所在簇仅存在于所述基础版本时,输出所述a类组件所在簇的所有gui组件为删除的组件的识别结果;
[0122]
第二识别单元,用于在所述a类组件所在簇仅存在于所述更新版本时,输出所述a类组件所在簇的所有gui组件为增加的组件的识别结果。
[0123]
在一种能够实现的方式中,所述第一识别模块4还用于:
[0124]
若所述a类组件所在簇同时存在于所述基础版本和所述更新版本,将所述a类组件所在簇的所有gui组件的变更判定为合理变更,输出对应的第二识别结果。
[0125]
在一种能够实现的方式中,所述xpath列表还包括基于属性的第二xpath,所述系统还包括:
[0126]
标记模块,用于对于匹配成功的gui组件,若gui组件包含动态属性,将此gui组件标记为b类组件,否则标记为c类组件;
[0127]
第二识别模块,用于根据所述第二xpath,将所述b类组件在所述基础版本和更新版本之间进行组件匹配;若所述b类组件仅存在于所述基础版本,将所述b类组件判定为删除的组件;若所述b类组件仅存在于所述更新版本,将所述b类组件判定为增加的组件;若所述b类组件同时存在于所述基础版本和所述更新版本,判断所述b类组件的静态属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述b类组件判定为修改的组件;
[0128]
第三识别模块,用于根据所述第二xpath,将所述c类组件在所述基础版本和更新版本之间进行组件匹配,若所述c类组件仅存在于所述基础版本,将所述c类组件判定为删除的组件;若所述c类组件仅存在于所述更新版本,将所述c类组件判定为增加的组件;若所述c类组件同时存在于所述基础版本和所述更新版本,判断所述c类组件的所有属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述c类组件判定为修改的组件。
[0129]
在一种能够实现的方式中,所述元数据解析模块2包括第二xpath生成单元,所述第二xpath生成单元用于:
[0130]
根据改进的基于元素属性的构造方法生成所述基于属性的第二xpath;
[0131]
其中,所述改进的基于元素属性的构造方法为:
[0132]
若一个元素无法用自身属性值来构造唯一的xpath,则从其父节点开始递归地去查找祖先节点,从其最近可精确定位的祖先节点的子孙节点中,获取对应所述元素的唯一属性值,将该元素的xpath表示为其最近可精确定位的祖先节点的xpath加上所述唯一属性值。
[0133]
本发明还提供了一种移动应用图形用户界面变更的识别装置,包括:
[0134]
存储器,用于存储指令;其中,所述指令为可实现如上任意一项实施例所述的移动应用图形用户界面变更的识别方法的指令;
[0135]
处理器,用于执行所述存储器中的指令。
[0136]
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一项实施例所述的移动应用图形用户界面变更的识别方法。
[0137]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0138]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0139]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0140]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0141]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0142]
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种移动应用图形用户界面变更的识别方法,其特征在于,包括:多次采集gui页面对应不同版本类别的元数据,所述版本类别包括基础版本和更新版本;对各所述元数据进行解析,生成各所述元数据的gui组件的xpath列表,所述xpath列表包括基于绝对路径的第一xpath;根据所述第一xpath,将同一版本类别的两相邻采集时间所对应的gui页面中的gui组件进行匹配,将匹配失败的gui组件标记为a类组件;对所述a类组件进行聚类,判断所述a类组件所在簇是否仅存在于所述基础版本或仅存在于所述更新版本,若是,将所述a类组件所在簇的所有gui组件的变更判定为版本迭代导致的变更,输出对应的第一识别结果。2.根据权利要求1所述的移动应用图形用户界面变更的识别方法,其特征在于,所述输出对应的第一识别结果,包括:若所述a类组件所在簇仅存在于所述基础版本,输出所述a类组件所在簇的所有gui组件为删除的组件的识别结果;若所述a类组件所在簇仅存在于所述更新版本,输出所述a类组件所在簇的所有gui组件为增加的组件的识别结果。3.根据权利要求2所述的移动应用图形用户界面变更的识别方法,其特征在于,所述方法还包括:若所述a类组件所在簇同时存在于所述基础版本和所述更新版本,将所述a类组件所在簇的所有gui组件的变更判定为合理变更,输出对应的第二识别结果。4.根据权利要求1所述的移动应用图形用户界面变更的识别方法,其特征在于,所述xpath列表还包括基于属性的第二xpath,所述方法还包括:对于匹配成功的gui组件,若gui组件包含动态属性,将此gui组件标记为b类组件,否则标记为c类组件;根据所述第二xpath,将所述b类组件在所述基础版本和更新版本之间进行组件匹配;若所述b类组件仅存在于所述基础版本,将所述b类组件判定为删除的组件;若所述b类组件仅存在于所述更新版本,将所述b类组件判定为增加的组件;若所述b类组件同时存在于所述基础版本和所述更新版本,判断所述b类组件的静态属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述b类组件判定为修改的组件;根据所述第二xpath,将所述c类组件在所述基础版本和更新版本之间进行组件匹配,若所述c类组件仅存在于所述基础版本,将所述c类组件判定为删除的组件;若所述c类组件仅存在于所述更新版本,将所述c类组件判定为增加的组件;若所述c类组件同时存在于所述基础版本和所述更新版本,判断所述c类组件的所有属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述c类组件判定为修改的组件。5.根据权利要求4所述的移动应用图形用户界面变更的识别方法,其特征在于,所述生成各所述元数据的gui组件的xpath列表,包括:根据改进的基于元素属性的构造方法生成所述基于属性的第二xpath;其中,所述改进的基于元素属性的构造方法为:若一个元素无法用自身属性值来构造唯一的xpath,则从其父节点开始递归地去查找
祖先节点,从其最近可精确定位的祖先节点的子孙节点中,获取对应所述元素的唯一属性值,将该元素的xpath表示为其最近可精确定位的祖先节点的xpath加上所述唯一属性值。6.一种移动应用图形用户界面变更的识别系统,其特征在于,包括:元数据采集模块,用于多次采集gui页面对应不同版本类别的元数据,所述版本类别包括基础版本和更新版本;元数据解析模块,用于对各所述元数据进行解析,生成各所述元数据的gui组件的xpath列表,所述xpath列表包括基于绝对路径的第一xpath;第一匹配模块,用于根据所述第一xpath,将同一版本类别的两相邻采集时间所对应的gui页面中的gui组件进行匹配,将匹配失败的gui组件标记为a类组件;第一识别模块,用于对所述a类组件进行聚类,判断所述a类组件所在簇是否仅存在于所述基础版本或仅存在于所述更新版本,若是,将所述a类组件所在簇的所有gui组件的变更判定为版本迭代导致的变更,输出对应的第一识别结果。7.根据权利要求6所述的移动应用图形用户界面变更的识别系统,其特征在于,所述第一识别模块包括:第一识别单元,用于在所述a类组件所在簇仅存在于所述基础版本时,输出所述a类组件所在簇的所有gui组件为删除的组件的识别结果;第二识别单元,用于在所述a类组件所在簇仅存在于所述更新版本时,输出所述a类组件所在簇的所有gui组件为增加的组件的识别结果。8.根据权利要求7所述的移动应用图形用户界面变更的识别系统,其特征在于,所述第一识别模块还用于:若所述a类组件所在簇同时存在于所述基础版本和所述更新版本,将所述a类组件所在簇的所有gui组件的变更判定为合理变更,输出对应的第二识别结果。9.根据权利要求6所述的移动应用图形用户界面变更的识别系统,其特征在于,所述xpath列表还包括基于属性的第二xpath,所述系统还包括:标记模块,用于对于匹配成功的gui组件,若gui组件包含动态属性,将此gui组件标记为b类组件,否则标记为c类组件;第二识别模块,用于根据所述第二xpath,将所述b类组件在所述基础版本和更新版本之间进行组件匹配;若所述b类组件仅存在于所述基础版本,将所述b类组件判定为删除的组件;若所述b类组件仅存在于所述更新版本,将所述b类组件判定为增加的组件;若所述b类组件同时存在于所述基础版本和所述更新版本,判断所述b类组件的静态属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述b类组件判定为修改的组件;第三识别模块,用于根据所述第二xpath,将所述c类组件在所述基础版本和更新版本之间进行组件匹配,若所述c类组件仅存在于所述基础版本,将所述c类组件判定为删除的组件;若所述c类组件仅存在于所述更新版本,将所述c类组件判定为增加的组件;若所述c类组件同时存在于所述基础版本和所述更新版本,判断所述c类组件的所有属性的值在所述基础版本和所述更新版本之间是否发生变化,若是,将所述c类组件判定为修改的组件。10.根据权利要求9所述的移动应用图形用户界面变更的识别系统,其特征在于,所述元数据解析模块包括第二xpath生成单元,所述第二xpath生成单元用于:根据改进的基于元素属性的构造方法生成所述基于属性的第二xpath;
其中,所述改进的基于元素属性的构造方法为:若一个元素无法用自身属性值来构造唯一的xpath,则从其父节点开始递归地去查找祖先节点,从其最近可精确定位的祖先节点的子孙节点中,获取对应所述元素的唯一属性值,将该元素的xpath表示为其最近可精确定位的祖先节点的xpath加上所述唯一属性值。11.一种移动应用图形用户界面变更的识别装置,其特征在于,包括:存储器,用于存储指令;其中,所述指令为可实现如权利要求1-5任意一项所述的移动应用图形用户界面变更的识别方法的指令;处理器,用于执行所述存储器中的指令。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-5任意一项所述的移动应用图形用户界面变更的识别方法。
技术总结
本发明涉及互联网技术领域,公开了一种移动应用图形用户界面变更的识别方法、系统及装置。本发明对GUI页面对应不同版本类别的元数据进行多次采集,并对采集的元数据进行解析,构造各元数据对应GUI组件的XPath,并基于XPath算法来进行GUI组件间的匹配,根据匹配结果对版本迭代所导致的GUI变更进行识别;本发明能够避免将合理的动态变化导致的GUI变更识别为版本迭代所导致的GUI变更,进一步提高GUI变更识别的精确性。变更识别的精确性。变更识别的精确性。
技术研发人员:曾楚 龙永浩 陈湘萍 周晓聪 郑子彬
受保护的技术使用者:中山大学
技术研发日:2021.12.08
技术公布日:2022/3/8