一种界面检查的方法及装置与流程

文档序号:21844177发布日期:2020-08-14 16:51阅读:194来源:国知局
一种界面检查的方法及装置与流程

本发明涉及数据处理技术领域,特别是涉及一种界面检查的方法,以及一种界面检查的装置。



背景技术:

现在不少游戏都是采用cocos2d-x作为游戏界面框架,采用cocos2d-x作为游戏界面框架的游戏中,大部分界面布局、文本显示、列表框、按钮、图片等都是由cocos2d-x控件构成。

由于技术经常升级换代,游戏有时也需要对cocos2d-x进行升级以支持更多的表现效果。然而,由于旧版本的cocos2d-x和新版本在控件属性定义不太相同,特别是在父子控件的颜色、透明度、翻转关系的继承关系上不一致,旧版本的父节点的颜色、透明度、翻转关系属性不会继承给子节点,而新版本会继承,这就导致原来的界面设计资源运用到新版本上会异常。因此,在进行cocos2d-x大版本升级之后,游戏界面可能出现一些不适配的情况,如字体属性、图片位置等不正确的问题。如图1所示,图形用户界面中边框部分的内容在升级之后发生了翻转,使得字体发生了颠倒。

现有cocos2d-x版本升级问题并没有太多实际解决方案,更多是通过其他方式避免版本升级,不升级就没有问题了,或者是升级了之后,测试人员一个个发现界面问题,开发人员一个个解决界面问题。目前解决版本升级的问题主要有以下三种方式:

第一种:修改cocos2d-x和编辑器默认逻辑代码

由于cocos2d-x版本升级之后出现的界面异常,是由于新版本与旧版本之间的代码差异造成的,为了使新版本依然能兼容游戏旧版本的资源,我们可以修改cocos2d-x的逻辑代码,把新版本父子节点控件的属性继承关系改成和旧版本一样,相当于去掉一些新版本的改动。同样,编辑器也需要修改,使得在编辑器中看到的资源效果,以及在游戏中看到的资源效果都和旧版本中一致。

第二种:人工识别版本升级变化

如果无法避免版本升级带来的变化,则需要加入检测的手段,识别出控件显示异常的问题。例如,控件的文本颜色在版本升级前后发生了变化,人工识别的方式就是:打开旧版本的游戏客户端和新版本的游戏客户端,在同一个界面停留,对比两处的界面显示是否一致,如果不一致,则可以判定控件显示异常。

第三种:对比图像相似度识别版本升级后的界面变化

人工识别方式效率不高,人眼可能区分不出一些颜色差异不大或者一些显示较小的区域。例如,在进行版本升级之后,有一个图片控件发生了x轴的翻转,使得显示效果在升级前后不一致,如果肉眼观察不仔细就会遗漏。而如果要求测试人员做到很精细的检测,则肯定会造成低效率。

所以,可以使用计算机图像相似度来识别界面差异,比如可以使用rgb像素直方图的方式统计左右界面在各种颜色值上的分布,如果两个界面的颜色直方图统计差异过大,那么说明两个界面的颜色比例不一致,界面很可能发生了变化;或者是通过汉明距离计算,比较左右界面的每个像素的数值差异,如果差异过大,界面很可能发生了变化;或者是通过sift算法计算图像的关键点特征向量,对比左右界面的关键点特征向量,进而判断界面是否发生了变化。

上述几种现有方案存在如下的缺点:

针对第一种:修改cocos2d-x和编辑器默认逻辑代码

1、成本较高

修改cocos2d-x和编辑器的逻辑,需要改动引擎和编辑器的源码,而有些编辑器的源码并不是开源的,所以很难改动。即使能够获取到源码进行改动,修改完的引擎和编辑器也要打包发给使用的人员,成本较高。

2、设置不统一

修改了引擎和编辑器的默认逻辑之后,使用这套自定义的工具输出美术资源,放到其他相同版本的引擎和编辑器下面,由于设置不统一,也会出现异常。

3、增加维护工作量

如果在升级了某个版本的cocos2d-x中修改了引擎和编辑器的默认逻辑,如果后续还要再次升级,依然需要把这部分修改合并,增加了维护的工作量。

针对第二种:人工识别版本升级变化

1、效率低

人工检查引擎升级前后的界面差异,这要求测试人员对所有界面进行遍历检测。但是,一般一个游戏会有上百个界面,一些界面的打开层级还很深,测试人员需要耗费大量的精力和时间才能覆盖完全,测试效率很低。

2、遗漏可能性大

对于一些颜色区分不大或者显示区域较小的界面变化,仅靠人工较难识别出来,另外一些打开层级过深的界面,也容易被测试人员忽略,导致测试遗漏。

针对第三种:图像识别的方式识别版本升级变化

1、效率低

图像识别是替代了人眼进行版本升级前后两个界面差异的检测,所以图像识别的方式依然需要进入到各个游戏界面,进行截图,然后计算两个图片的差异,效率比较低,如果有界面没有遍历到,也会出现遗漏。

2、判断标准难以统一

由于游戏界面一般比较复杂,很难使用统一的图像相似度算法来对比。比如有些界面只是控件的位置发生了变化,这时采用汉明距离或者sift特征点等来识别能识别出差异,使用颜色直方图统计没法看出差异,有些只是控件的颜色变化,这时采用sift就识别不出差异,用颜色直方图的效果更好。另外,有的界面有动效,并非静态界面,这时生成出来的图像就和时刻有关,也会影响识别的结果。

3、需要一定的人工筛查

图像相似度只能告诉我们两张图片相似度有多高,在哪些方面有差异,比如颜色、区域、线条特征点等等,还需要人工把图像识别的结果理解为特定的问题,比如某个按钮、某个文本出现异常。

因此,需要提供一种能够自动检测在cocos2d-x版本升级之后游戏界面控件显示异常的方案,帮助游戏开发者更好的进行cocos2d-x版本升级。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种界面检查的方法和相应的一种界面检查的装置。

本发明实施例公开了一种界面检查的方法,包括:

获取所述图形用户界面中控件的属性数据;

根据所述控件的属性数据,确定控件之间的层级关系;

根据所述控件之间的层级关系,将所述控件的属性数据导出为预设结构的控件数据;

确定所述预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

可选地,所述根据所述控件的属性数据,确定控件之间的层级关系,包括:

将所述图形用户界面中最外层的控件确定为当前操作控件;

获取所述当前操作控件的属性数据;

根据所述当前操作控件的属性数据,判断所述当前操作控件是否存在子节点控件;

若当前操作控件存在子节点控件,则枚举所有的子节点控件,记录所述当前操作控件和所有子节点控件之间的层级关系,依次将子节点控件确定为新的当前操作控件,返回执行所述获取所述当前操作控件的属性数据的步骤;

若当前操作控件不存在子节点控件,则判断所述当前操作控件是否为最外层的控件;

若当前操作控件不是最外层的控件,则根据所述当前操作控件确定父节点控件,将所述父节点控件确定为新的当前操作控件,返回执行所述获取所述当前操作控件的属性数据的步骤;

若当前操作控件是最外层的控件,则输出所有的当前操作控件和所有子节点控件之间的层级关系,得到控件之间的层级关系。

可选地,所述属性数据包括子节点属性数据;

所述获取所述图形用户界面中控件的属性数据,包括:

获取所述图形用户界面中控件的子节点属性数据;

所述根据所述当前操作控件的属性数据,判断所述当前操作控件是否存在子节点控件,包括:

根据所述当前操作控件的子节点属性数据,判断所述当前操作控件是否存在子节点控件。

可选地,所述确定所述预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据,包括:

从所述预设结构的控件数据中,确定当前操作控件;

根据所述当前操作控件的属性数据,检查所述当前操作控件是否存在子节点控件;

若所述当前操作控件存在子节点控件,则枚举所有的子节点控件,依次遍历所述当前操作控件和子节点控件的预设属性数据之间是否存在异常,若存在异常,则生成遍历数据;依次将子节点控件确定为新的当前操作控件,返回执行所述检查所述当前操作控件是否存在子节点控件的步骤;

若所述当前操作控件不存在子节点控件,则检查所述当前操作控件是否为最外层的控件;若所述当前操作控件不是最外层的控件,则将所述当前操作控件的父节点控件确定为新的当前操作控件,返回执行所述检查所述当前操作控件是否存在子节点控件的步骤;若所述当前操作控件是最外层的控件,则输出所有的遍历数据,得到异常数据。

可选地,所述预设属性数据包括颜色属性数据、透明度属性数据和翻转度属性数据,所述依次遍历所述当前操作控件和子节点控件的指定属性数据之间是否存在异常,若存在异常,则生成遍历数据,包括:

依次遍历所述当前操作控件和子节点控件的颜色属性数据、透明度属性数据和翻转度属性数据;

当所述当前操作控件和子节点控件的颜色属性数据存在异常时,或,当所述当前操作控件和子节点控件的透明度属性数据存在异常时,或,当所述当前操作控件和子节点控件的翻转度属性数据存在异常时,生成遍历数据。

可选地,所述根据所述控件之间的层级关系,将所述控件的属性数据导出为预设结构的控件数据,包括:

根据所述控件及控件之间的层级关系,通过日志传输的方式将所述控件的属性数据导出为预设结构的控件数据;

或,

根据所述控件及控件之间的层级关系,采用预设的文件传输协议,将所述控件的属性数据导出为预设结构的控件数据。

可选地,还包括:

获取所述图形用户界面的资源文件;所述资源文件包括控件数据;

确定所述控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

本发明实施例还公开了一种界面检查的装置,包括:

属性数据获取模块,用于获取图形用户界面中控件的属性数据;

层级关系确定模块,用于根据所述控件的属性数据,确定控件之间的层级关系;

控件数据导出模块,用于根据所述控件之间的层级关系,将所述控件的属性数据导出为预设结构的控件数据;

差异确定模块,用于确定所述预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

本发明实施例还公开了一种电子设备,包括:

一个或多个处理器;和

其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如本发明实施例任一项所述的方法。

本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例任一项所述的方法。

本发明实施例包括以下优点:

在本发明实施例中,通过获取图形用户界面中控件的属性数据;根据所述控件的属性数据,确定控件之间的层级关系;根据所述控件之间的层级关系,将所述控件的属性数据导出为预设结构的控件数据;确定所述预设结构的控件数据中,具有父子节点关系的控件的属性数据之间存在差异,得到异常数据。从而能直接识别出图形用户界面中控件的属性数据,确定各个控件之间的层级关系,对所有控件的属性数据进行检查,这种检查方式更准确,速度更快,效率更高。

附图说明

图1是现有技术的一种图形用户界面升级之后发生翻转的示意图;

图2是本发明的一种界面检查的方法实施例的步骤流程图;

图3是本发明的一种图形用户界面的示意图;

图4是本发明的一种确定控件之间的层级关系的流程示意图;

图5是本发明的一种检查控件之间是否存在异常的流程示意图;

图6是本发明的一种界面检查的装置实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图2,示出了本发明的一种界面检查的方法实施例的步骤流程图,具体可以包括如下步骤:

步骤201,获取图形用户界面中控件的属性数据;

需要说明的是,移动终端的操作系统可以包括android(安卓)、ios、windowsphone、windows等等,通常可以支持各种游戏应用的运行。通过在移动终端上运行游戏应用,并在移动终端的显示器上渲染得到图形用户界面。在图形用户界面中所显示的内容可以包括多个控件。

作为一种示例,图形用户界面中的控件可以包括scene场景控件,layer控件,panel面板控件,普通控件等。普通控件之下还可以再包含普通控件。比如,一个包含图片和文字的按钮,其本身是一个button按钮控件,在这个button控件的下面包含了imageview图像视图控件和label标签控件,imageview控件和label控件即为button控件的子节点控件。

其中,控件的属性数据可以包括:颜色属性数据,透明度属性数据,翻转属性数据,子节点属性数据,名字属性数据等等。在具体实现时,还可以根据实际需要确定为其他的属性数据,本发明实施例对此并不限制。

具体的,由于cocos2d-x的控件都继承于node类,node类提供了一个获取子节点的方法getchildren(),因此,可以将一个控件之下的所有子节点,通过getchildren()方法获取,递归调用getchildren(),直到这个控件是最底层的控件,没有子节点为止,从而,得到整个控件的树状结构。此外,针对每个控件,node类还提供了获取控件名称属性的方法getname(),获取控件高度属性的方法getheight(),获取控件颜色属性的方法getcolor(),获取控件文件名称属性的方法getfilename(),获取控件透明度属性的方法getopacity(),获取控件x轴翻转属性的方法isflippedx()和获取控件y轴翻转属性的方法isflippedy()等等。在本发明实施例中,可以采用cocos2d-x提供的接口调用的方式,调用上述的这些方法获取到图形用户界面中每个控件的属性数据。

步骤202,根据所述控件的属性数据,确定控件之间的层级关系;

具体的,可以从图形用户界面的最上层控件开始,自上而下一层一层地对控件的属性数据进行解析,确定控件之间的层级关系。其中,层级关系可以包括父节点关系和子节点关系。

作为一种示例,如图3示出了本发明的一种图形用户界面的示意图,其中,图形用户界面由一个最上层的箭头按钮、中间偏上部分的两个显示框(分布包含有一张背景图、一张小的图片和一行文字)、中间部分的一张图片、中间偏下部分的一段文字组成。该图形用户界面首先可以解析为一个主面板控件和一些子节点组成,主面板控件为mainpanel,指整个界面,底面是白色,容纳了箭头按钮、显示框、图片、文字等其他部分,这些小的界面元素可以视作整个大的界面的子节点控件,mainpanel的children子节点属性指向了这些元素。再继续往下解析,对mainpanel的第二个子节点控件,即xx1panel进行解析,又得到了该xx1panel的属性,包括name名字、opacity透明度、color颜色、height高度、backgroundimage背景图像、flipped翻转等属性。同时,它又有两个子节点控件:一张图片控件和一行文字控件。再继续对图片控件和文字控件部分解析,又可以分别得到图片控件和文字控件的属性,包括name、color、opacity、flippedx和flippedy等属性。由于该解析过程是根据控件的层级自上而下一层一层解析的,因此,在解析控件之后,可以确定控件之间的层级关系。

步骤203,根据所述控件之间的层级关系,将所述控件的属性数据导出为预设结构的控件数据;

在本发明实施例中,可以根据控件之间的层级关系,将控件的属性数据导出为预设结构的控件数据,以便于后续分析控件是否异常。其中,预设结构,可以是预先规定的一种数据结构,例如,预设结构可以为树状结构,将控件的属性数据导出为树状结构的控件数据,可以很方便直观的确定控件之间的层级关系。

预设结构的控件数据可以以json、xml等结构数据保存。

步骤404,确定所述预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

其中,预设属性数据可以是预先规定的一些属性数据,通常预设属性数据可以是具有父子节点关系的控件的继承关系上可能会不一致的属性数据,例如,在具有父子节点关系的控件的颜色、透明度、翻转的继承关系上不一致,则预设属性数据可以设置为颜色属性数据、透明度属性数据、翻转属性数据等。

在本发明实施例中,可以检查比对预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间是否存在差异,确定预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据,以根据异常数据确定是否有可能存在版本升级问题。检查规则可以包括对父节点子节点的颜色、透明度、翻转属性等进行检查。

作为一种示例,得到的异常数据可以记录如下所示:

shoppanel-xx1panelflipx=0;shoppanel-xx1panel-xx1buttonflipx=1。

表示为xx1button控件的水平翻转属性与父节点xx1panel控件的翻转属性数据不一致。此外,为了使记录的问题更容易理解,还可以将检查结果(异常数据)翻译成问题报告,如翻译为:商店界面的xx1按钮,水平翻转属性与xx1panel不一致。

在本发明的一种优选实施例中,所述步骤202可以包括如下子步骤:

子步骤s11,将所述图形用户界面中最外层的控件确定为当前操作控件;

在本发明实施例中,首先将图形用户界面中最外层的控件确定为当前操作控件,例如,最外层控件为mainpanel主面板控件。

子步骤s12,获取所述当前操作控件的属性数据;

子步骤s13,根据所述当前操作控件的属性数据,判断所述当前操作控件是否存在子节点控件;

在本发明实施例中,可以根据当前操作控件的属性数据,判断前操作控件是否存在子节点控件,例如,根据当前操作控件的子节点属性数据来判断是否存在子节点控件。其中,当前操作控件存在子节点控件时,执行子步骤s14,反之,当前操作控件不存在子节点控件时,执行子步骤s15。

子步骤s14,若当前操作控件存在子节点控件,则枚举所有的子节点控件,记录所述当前操作控件和所有子节点控件之间的层级关系,依次将子节点控件确定为新的当前操作控件,返回执行所述获取所述当前操作控件的属性数据的步骤;

子步骤s15,若当前操作控件不存在子节点控件,则判断所述当前操作控件是否为最外层的控件;

具体的,可以从预设结构的控件数据中,判断当前操作控件是否为最外层的控件。若当前操作控件不是最外层的控件,执行子步骤s16,若当前操作控件是最外层的控件,执行子步骤s17。

子步骤s16,若当前操作控件不是最外层的控件,则根据所述当前操作控件确定父节点控件,将所述父节点控件确定为新的当前操作控件,返回执行所述获取所述当前操作控件的属性数据的步骤;

子步骤s17,若当前操作控件是最外层的控件,则输出所有的当前操作控件和所有子节点控件之间的层级关系,得到控件之间的层级关系。

若当前操作控件是最外层的控件,则当前操作控件不存在子节点控件,且是最外层的控件(不存在父节点控件),可以认为当前已经遍历完成了所有的控件,可以结束流程。

如图4示出了本发明的一种确定控件之间的层级关系的流程示意图。具体流程包括:

将游戏最外层panel设置为当前控件;获取当前控件的各项属性;判断当前控件是否有子节点;

若当前控件有子节点,则枚举子控件i=1...n;记录父子节点关系;将子控件i设置为当前控件,返回执行上述的获取当前控件的各项属性等步骤;

若当前控件没有子节点,则判断当前控件是否为最外层panel;若当前控件不是最外层panel,则将父节点设置为当前控件,并执行上述的枚举子控件i=1...n等步骤,若当前控件是最外层panel,则结束并导出结果。

在本发明的一种优选实施例中,所述属性数据包括子节点属性数据;

所述步骤201可以包括如下子步骤:

获取所述图形用户界面中控件的子节点属性数据。

由于,采用cocos2d-x作为游戏界面框架生成的界面中,所有的控件都继承于node节点类,node类可以采用getchildren()方法来获取一个控件之下的所有子节点,因此,可以通过递归调用getchildren()来获取所有控件的子节点,直到这个控件是最底层的控件,没有子节点为止,可以得到整个控件树状结构。

所述子步骤s13可以包括如下子步骤:

根据所述当前操作控件的子节点属性数据,判断所述当前操作控件是否存在子节点控件。

在本发明实施例中,可以根据当前操作控件的子节点属性数据,来判断当前操作控件是否存在子节点控件。

在本发明的一种优选实施例中,所述步骤103可以包括如下子步骤:

根据所述控件及控件之间的层级关系,通过日志传输的方式将所述控件的属性数据导出为预设结构的控件数据;或,根据所述控件及控件之间的层级关系,采用预设的文件传输协议,将所述控件的属性数据导出为预设结构的控件数据。

其中,预设的文件传输协议可以是预先设定的协议,如,rsync或者rpc的协议。预设结构可以是预先设定的数据结构,如树状结构。所述预设结构的控件数据的格式可以为:json格式或xml格式。

在本发明实施例中,根据确定的控件之间的层级关系,采用日志传输的方式,或者通过预设的文件传输协议,将控件的属性数据为结构化数据,以便于在后续的流程重复利用这些控件的属性数据。一般将控件的属性数据到处为json格式的数据或者xml格式的数据,因为这两种数据格式能很好的标识节点的属性,以及定义父节点子节点之间的关联关系。

在本发明的一种优选实施例中,所述步骤204可以包括如下子步骤:

子步骤s21,从所述预设结构的控件数据中,确定当前操作控件;

子步骤s22,根据所述当前操作控件的属性数据,检查所述当前操作控件是否存在子节点控件;

具体的,可以通过读取预设结构的控件数据中,当前操作控件的属性数据,在预设结构的控件数据中记录的属性数据可以包括子节点属性数据、颜色属性数据、透明度属性数据和翻转度属性数据等。根据当前操作控件的子节点属性数据来判断当前操作控件是否存在子节点控件,若是存在子节点控件,则执行子步骤s23,若不存在子节点控件,则执行子步骤s24。

子步骤s23,若所述当前操作控件存在子节点控件,则枚举所有的子节点控件,依次遍历所述当前操作控件和子节点控件的预设属性数据之间是否存在异常,若存在异常,则生成遍历数据;依次将子节点控件确定为新的当前操作控件,返回执行所述检查所述当前操作控件是否存在子节点控件的步骤;

具体的,若当前操作控件存在子节点控件,则可以依次检查比对当前操作控件和子节点控件的预设属性数据之间是否存在异常,若当前操作控件和子节点控件的预设属性数据之间存在异常,则生成遍历数据,该遍历数据可以是记录当前操作控件和子节点控件的预设属性数据之间存在异常的数据。其中,预设属性数据可以包括一项或多项属性数据,当包括多种属性数据时,当前操作控件和子节点控件之间任意一项属性数据存在异常,记录该当前操作控件和子节点控件之间存在异常。若当前操作控件和子节点控件的预设属性数据之间不存在异常,则不进行相关记录。在检查比对完成一个子节点控件之后,继续检查比对下一个子节点控件,直到遍历完成当前操作控件的所有的子节点控件。

在遍历完成当前操作控件的所有的子节点控件之后,可以依次将子节点控件作为新的当前操作控件,继续返回执行上述子步骤s22-s23。

子步骤s24,若所述当前操作控件不存在子节点控件,则检查所述当前操作控件是否为最外层的控件;若所述当前操作控件不是最外层的控件,则将所述当前操作控件的父节点控件确定为新的当前操作控件,返回执行所述检查所述当前操作控件是否存在子节点控件的步骤;若所述当前操作控件是最外层的控件,则输出所有的遍历数据,得到异常数据。

在当前操作控件不存在子节点控件,且当前操作控件是最外层的控件(不存在父节点控件)时,表示遍历完成了图形用户界面中所有的控件,可以结束检查流程。具体的,若当前操作控件不存在子节点控件,则可以根据预设结构的控件数据,来判断当前操作控件是否为最外层的控件,即判断当前操作控件是否存在父节点控件。若当前操作控件不是最外层的控件,则将当前操作控件的父节点控件确定为新的当前操作控件,返回执行上述子步骤s22-s23。若当前操作控件是最外层的控件,则可以输出上述子步骤s23中,生成的所有的遍历数据,得到异常数据。

作为一种示例,预设属性数据可以是翻转属性数据,包括x翻转属性数据和y翻转属性数据。

由于,旧版本cocos2d-x的父节点控件的翻转属性不会影响子节点控件的翻转属性,而新版本则会产生影响,因此可以设置检查规则:如果一个控件带有翻转属性,且其存在子节点控件,则这个控件可能有问题,可以生成与该控件相关的异常数据。

通过调用isflippedx()可以获得控件的x轴翻转属性数据,调用isflippedy()方法可以获得控件的y轴翻转属性数据,记录控件的x轴或y轴翻转属性数据,并查询该控件是否存在子节点控件,可以得到有问题的节点控件,继续递归执行上述的过程,可得到全部有问题的节点控件。

作为另一种示例,预设属性数据还可以是透明度属性数据和/或颜色属性数据。

由于,旧版本cocos2d-x的父节点控件的透明度不会影响子节点控件的透明度、父节点控件的颜色不会影响子节点控件的颜色,而新版本会影响。因此,可以设置检查规则如下:

1、如果一个控件存在子节点控件,且其子节点控件的颜色属性数据与父节点控件的颜色属性数据设置不一致,则这个控件可能有问题;

2、如果一个控件存在子节点控件,且其子节点控件的透明度与父节点控件的透明度属性数据设置不一致,则这个控件可能有问题。

通过调用getcolor()可以获得控件的颜色属性数据,调用getopacity()方法可以获得控件的透明度的属性数据,记录父节点控件的颜色和/或透明度属性数据,并查询该控件的子节点控件的颜色和/或透明度属性数据,检查父子节点控件的颜色和/或透明度属性数据的差异,可以得到有问题的节点,进一步递归执行上述的过程,可以得到全部有问题的节点控件。

在本发明的一种优选实施例中,所述预设属性数据包括颜色属性数据、透明度属性数据和翻转度属性数据,所述子步骤s23可以包括如下子步骤:

依次遍历所述当前操作控件和子节点控件的颜色属性数据、透明度属性数据和翻转度属性数据;当所述当前操作控件和子节点控件的颜色属性数据存在异常时,或,当所述当前操作控件和子节点控件的透明度属性数据存在异常时,或,当所述当前操作控件和子节点控件的翻转度属性数据存在异常时,生成遍历数据。

检查具有父子节点关系的空间之间的颜色属性数据、透明度属性数据和翻转度属性数据,如果其中的任意一个属性数据存在异常就生成对应的遍历数据。具体的,通过依次检查比对当前操作控件和子节点控件的颜色属性数据、透明度属性数据和翻转度属性数据,当当前操作控件和子节点控件的颜色属性数据存在异常时,或,当当前操作控件和子节点控件的透明度属性数据存在异常时,或,当当前操作控件和子节点控件的翻转度属性数据存在异常时,生成遍历数据,直到遍历完成图形用户界面中所有的控件。

如图5示出了本发明的一种检查控件之间是否存在异常的流程示意图,具体的流程如下:

检查最外层控件;记录当前控件的颜色、透明度等属性;判断当前控件是否有子节点;

若当前控件有子节点控件,则枚举所有的子节点控件i=1...n;获取子控件的颜色、透明度等属性;对父子节点的颜色、透明度翻转属性等进行检查,判断是否不相等,如存在不相等,则记录可能异常节点,如都一致,则将子控件i设置为当前控件,返回执行上述的记录当前控件的颜色、透明度等属性等步骤。

若当前控件不存在子节点,则检查当前控件是否为最外层panel控件;若当前控件不是最外层的控件,则返回上层的递归逻辑(即将当前控件的父节点控件设置为当前控件,并返回执行上述的记录当前控件的颜色、透明度等属性等步骤),若当前控件是最外层控件,则说明逻辑已经全部执行完毕,所有子节点都已遍历完全,可以结束流程,并输出结果。

在本发明的一种优选实施例中,还包括:

获取所述图形用户界面的资源文件;所述资源文件包括控件数据;确定所述控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

在本发明实施例中,可以通过获取图形用户界面的资源文件,该资源文件可以包括控件数据;检查控件数据中,具有父子节点关系的控件的预设属性数据之间是否存在差异,确定控件数据中具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。由于,资源文件通常保存为树状结构,因此,可以直接采用资源文件来分析具有父子节点关系的控件之间是否异常。具体的检查过程可以参考上述的步骤204的子步骤s21-s24,在此不再赘述。

在本发明的一种优选实施例中,所述预设结构为树状结构。

在本发明实施例中,通过对控件的自动检查,不同于人工检测和图像识别检测的方式,采用对图形用户界面中控件的检测,是建立在对图形用户界面的解析的基础上的,这种方式能直接识别出当前的图形用户界面的面板、按钮、文本等控件布局,各个控件的层级关系,从而对所有控件的属性数据进行检查,得到异常数据。这种检查方式更准确,速度更快,效率更高。

此外,采用图形用户界面层级结构的检测,能更彻底的对各个界面、各个资源进行检测,保证所有图形用户界面都能覆盖,而且检测的方式是直接根据控件的属性数据进行判断,不依赖与人的眼睛或者图像识别的结果,能避免人工和图像识别的方式带来的检查遗漏问题,是的检查结果更为全面,便于开发人员对图形用户界面进行改进。

进而,一方面如果游戏有新的图形用户界面制作,可以导出新图形用户界面的控件结构,进行快速检查;另一方面如果后续还有新的cocos2d-x版本升级,可以直接运用这套方案,只需调整检查规则即可,就可以用作新版本的检查工具,拓展性更好。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图6,示出了本发明的一种界面检查的装置实施例的结构框图,具体可以包括如下模块:

属性数据获取模块601,用于获取图形用户界面中控件的属性数据;

层级关系确定模块602,用于根据所述控件的属性数据,确定控件之间的层级关系;

控件数据导出模块603,用于根据所述控件之间的层级关系,将所述控件的属性数据导出为预设结构的控件数据;

差异确定模块604,用于确定所述预设结构的控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

在本发明的一种优选实施例中,所述层级关系确定模块502包括:

第一控件确定子模块,用于将所述图形用户界面中最外层的控件确定为当前操作控件;

属性数据获取子模块,用于获取所述当前操作控件的属性数据;

第一判断子模块,用于根据所述当前操作控件的属性数据,判断所述当前操作控件是否存在子节点控件;

层级关系记录子模块,用于若当前操作控件存在子节点控件,则枚举所有的子节点控件,记录所述当前操作控件和所有子节点控件之间的层级关系,依次将子节点控件确定为新的当前操作控件,返回执行所述获取所述当前操作控件的属性数据的步骤;

第二判断子模块,用于若当前操作控件不存在子节点控件,则判断所述当前操作控件是否为最外层的控件;

第二控件确定子模块,用于若当前操作控件不是最外层的控件,则根据所述当前操作控件确定父节点控件,将所述父节点控件确定为新的当前操作控件,返回执行所述获取所述当前操作控件的属性数据的步骤;

层级关系输出子模块,用于若当前操作控件是最外层的控件,则输出所有的当前操作控件和所有子节点控件之间的层级关系,得到控件之间的层级关系。

在本发明的一种优选实施例中,所述属性数据包括子节点属性数据;

所述属性数据获取模块601可以包括如下子模块:

第一获取子模块,用于获取所述图形用户界面中控件的子节点属性数据;

所述第一判断子模块可以包括如下单元:

第一判断单元,用于根据所述当前操作控件的子节点属性数据,判断所述当前操作控件是否存在子节点控件。

在本发明的一种优选实施例中,所述差异确定模块604,包括:

当前操作控件确定子模块,用于从所述预设结构的控件数据中,确定当前操作控件;

第一检查子模块,用于根据所述当前操作控件的属性数据,检查所述当前操作控件是否存在子节点控件;

子节点控件遍历子模块,用于若所述当前操作控件存在子节点控件,则枚举所有的子节点控件,依次遍历所述当前操作控件和子节点控件的预设属性数据之间是否存在异常,若存在异常,则生成遍历数据;依次将子节点控件确定为新的当前操作控件,返回执行所述检查所述当前操作控件是否存在子节点控件的步骤;

遍历数据输出子模块,用于若所述当前操作控件不存在子节点控件,则检查所述当前操作控件是否为最外层的控件;若所述当前操作控件不是最外层的控件,则将所述当前操作控件的父节点控件确定为新的当前操作控件,返回执行所述检查所述当前操作控件是否存在子节点控件的步骤;若所述当前操作控件是最外层的控件,则输出所有的遍历数据,得到异常数据。

在本发明的一种优选实施例中,所述预设属性数据包括颜色属性数据、透明度属性数据和翻转度属性数据,所述子节点控件遍历子模块,包括:

子节点控件遍历单元,用于依次遍历所述当前操作控件和子节点控件的颜色属性数据、透明度属性数据和翻转度属性数据;

遍历数据生成单元,用于当所述当前操作控件和子节点控件的颜色属性数据存在异常时,或,当所述当前操作控件和子节点控件的透明度属性数据存在异常时,或,当所述当前操作控件和子节点控件的翻转度属性数据存在异常时,生成遍历数据。

在本发明的一种优选实施例中,所述控件数据导出模块603,包括:

第一导出子模块,用于根据所述控件及控件之间的层级关系,通过日志传输的方式将所述控件的属性数据导出为预设结构的控件数据;

或,

第二导出子模块,用于根据所述控件及控件之间的层级关系,采用预设的文件传输协议,将所述控件的属性数据导出为预设结构的控件数据。

在本发明的一种优选实施例中,还包括:

资源文件获取模块,用于获取所述图形用户界面的资源文件;所述资源文件包括控件数据;

检查模块,用于确定所述控件数据中,具有父子节点关系的控件的预设属性数据之间存在差异,得到异常数据。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本发明实施例还提供了一种电子设备,包括:

一个或多个处理器;和

其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行本发明实施例任一项所述的方法。

本发明实施例还提供了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例任一项所述的方法。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预设方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种界面检查的方法和一种界面检查的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1