一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

窗口识别方法、装置、设备及计算机可读存储介质与流程

2022-11-19 07:19:25 来源:中国专利 TAG:


1.本发明涉及计算机应用技术领域,特别是涉及一种窗口识别方法、装置、设备及计算机可读存储介质。


背景技术:

2.随着计算机技术和终端技术的快速发展,可在终端上安装使用的各类应用逐渐增多。应用在终端上运行时,有时需要对特定窗口进行识别,通过对特定窗口的识别,判断页面上是否有特定窗口覆盖,进而做出不同的逻辑判断。比如,特定窗口为弹窗,对弹窗进行识别,如果当前有弹窗正在弹出,则需控制其他弹窗不可展示,如果当前没有任何弹窗正在弹出,则根据预定逻辑可以进行其他弹窗的展示。
3.目前,多是通过标记位标记窗口的出现和消失,通过标记位标记的状态可以对特定窗口进行识别。以弹窗为例,每个弹窗弹出时,都会设置相应弹窗的标记位为弹出状态,每个弹窗消失时,同样会设置相应弹窗的标记位为消失状态。应用在要展示每个弹窗时,都需要通过其他所有弹窗的标记位判断其他所有弹窗是否正在弹出。也就是说,通过现有的这种方式,当要识别的特定窗口较多时,标记位也会相应增多,管理成本较高,容易出现混乱,导致窗口识别不准确,应用性能较低。


技术实现要素:

4.本发明实施例的目的在于提供一种窗口识别方法、装置、设备及计算机可读存储介质,以提高窗口识别的准确性,提高应用性能。具体技术方案如下:
5.第一方面,本发明实施例提供一种窗口识别方法,包括:
6.获得目标展示页面的根视图;
7.依次遍历所述根视图的每个子视图,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中,所述目标点为目标窗口类型的窗口在终端屏幕出现的预估位置点;
8.如果所述目标点处于所述当前子视图的展示区域中,且所述当前子视图属于所述目标窗口类型,则确定所述目标展示页面上存在所述目标窗口类型的窗口。
9.在本发明的一种具体实施方式中,通过以下步骤判断所述当前子视图是否属于所述目标窗口类型:
10.通过读取所述当前子视图的类字段,获得所述当前子视图的属性信息;
11.根据所述当前子视图的属性信息,确定所述当前子视图是否属于所述目标窗口类型。
12.在本发明的一种具体实施方式中,所述依次遍历所述根视图的每个子视图,包括:
13.基于所述根视图对应的子视图数组,依次遍历所述根视图的每个子视图。
14.在本发明的一种具体实施方式中,所述判断目标点是否处于当前子视图的展示区域中,包括:
15.确定当前子视图在屏幕坐标系中的视图坐标,以及所述当前子视图的视图尺寸,所述屏幕坐标系以所述终端屏幕的左上角为原点,向右为横轴的增加方向,向下为纵轴的增加方向,所述视图坐标包括所述当前子视图的左上角的横坐标和纵坐标,所述视图尺寸包括宽尺寸和高尺寸;
16.如果满足以下条件,则确定目标点处于所述当前子视图的展示区域中:
17.所述当前子视图的横坐标小于所述目标点的横坐标;
18.所述当前子视图的纵坐标小于所述目标点的纵坐标;
19.所述当前子视图的横坐标加上所述当前子视图的宽尺寸大于所述目标点的横坐标;
20.所述当前子视图的纵坐标加上所述当前子视图的高尺寸大于所述目标点的纵坐标。
21.在本发明的一种具体实施方式中,所述依次遍历所述根视图的每个子视图,包括:
22.依次遍历所述根视图的下一层级的每个第一子视图;
23.相应的,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中,包括:
24.针对遍历到的每个第一子视图,判断目标点是否处于当前第一子视图的展示区域中;
25.相应的,所述如果所述目标点处于所述当前子视图的展示区域中,且所述当前子视图属于所述目标窗口类型,则确定所述目标展示页面上存在所述目标窗口类型的窗口,包括:
26.如果所述目标点处于所述当前第一子视图的展示区域中,且所述当前第一子视图属于所述目标窗口类型,则确定所述目标展示页面上存在所述目标窗口类型的窗口。
27.在本发明的一种具体实施方式中,在所述目标点处于所述当前第一子视图的展示区域中的情况下,还包括:
28.如果所述当前第一子视图不属于所述目标窗口类型,则令i=1,依次遍历所述当前第i子视图的下一层级的每个第i 1子视图,针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于所述目标窗口类型,i为正整数;
29.如果所述当前第i 1子视图属于所述目标窗口类型,则确定所述目标展示页面上存在所述目标窗口类型的窗口。
30.在本发明的一种具体实施方式中,还包括:
31.如果所述当前第i子视图的下一层级的每个第i 1子视图均不属于所述目标窗口类型,则针对所述当前第i子视图的下一层级的每个第i 1子视图,如果当前第i 1子视图存在下一层级的子视图,则令i=i 1,重复执行所述依次遍历所述当前第i子视图的下一层级的每个第i 1子视图,针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于所述目标窗口类型,如果所述当前第i 1子视图属于所述目标窗口类型,则确定所述目标展示页面上存在所述目标窗口类型的窗口的步骤。
32.在本发明的一种具体实施方式中,还包括:
33.如果所述目标点未处于所述根视图的各子视图的展示区域中,或者,展示区域包含所述目标点的子视图均不属于目标窗口类型,则确定所述目标展示页面上不存在所述目
标窗口类型的窗口。
34.第二方面,本发明实施例提供一种窗口识别装置,包括:
35.获得模块,用于获得目标展示页面的根视图;
36.遍历模块,用于依次遍历所述根视图的每个子视图,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中,所述目标点为目标窗口类型的窗口在终端屏幕出现的预估位置点;
37.识别模块,用于在所述目标点处于所述当前子视图的展示区域中,且所述当前子视图属于所述目标窗口类型的情况下,确定所述目标展示页面上存在所述目标窗口类型的窗口。
38.第三方面,本发明实施例提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
39.存储器,用于存放计算机程序;
40.处理器,用于执行存储器上所存放的程序时,实现如第一方面所述的窗口识别方法的步骤。
41.第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述的窗口识别方法的步骤。
42.应用本发明实施例所提供的技术方案,获得目标展示页面的根视图后,依次遍历根视图的每个子视图,针对遍历到的每个子视图,可以判断目标点是否处于当前子视图的展示区域中,目标点即为目标窗口类型的窗口在屏幕出现的预估位置点,如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。通过子视图与目标点的位置关系以及子视图的窗口类型,就可以准确识别出是否存在相应窗口,不需要通过标记位标记窗口的出现和消失,减少了对标记位的管理成本,避免因标记位过多引起的混乱问题,提高了窗口识别的准确性,提高了应用性能。
附图说明
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
44.图1为本发明实施例中一种窗口识别方法的实施流程图;
45.图2为本发明实施例中视图关系示意图;
46.图3为本发明实施例中一种窗口识别装置的结构示意图;
47.图4为本发明实施例中一种电子设备的结构示意图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
49.本发明的核心是提供一种窗口识别方法,该方法可以应用于任何一个应用进行窗口识别的场景中。应用在终端上运行时,有时需要对特定窗口进行识别,通过对特定窗口的识别,判断目标展示页面上是否有特定窗口覆盖,进而做出不同的逻辑判断。目标展示页面可以是应用当前正在展示的任意一个页面。比如,特定窗口为弹窗,对弹窗进行识别,如果
目标展示页面上有弹窗正在弹出,则需控制其他弹窗不可展示,如果目标展示页面上没有任何弹窗正在弹出,则根据预定逻辑可以进行其他弹窗的展示。举例而言,目标展示页面有弹窗正在弹出,弹窗内容为提示用户登录,则在未接收到用户的操作信息,弹窗未消失时,应用需控制其他弹窗不可展示。
50.本发明实施例在获得目标展示页面的根视图后,依次遍历根视图的每个子视图,针对遍历到的每个子视图,可以判断目标点是否在当前子视图的展示区域中,目标点即为目标窗口类型的窗口在屏幕出现的预估位置点,如果目标点在当前子视图的展示区域中,且当前子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。通过子视图与目标点的位置关系以及子视图的窗口类型,就可以准确识别出是否存在相应窗口,不需要通过标记位标记窗口的出现和消失,减少了对标记位的管理成本,避免因标记位过多引起的混乱问题,提高了窗口识别的准确性,提高了应用性能。
51.参见图1所示,为本发明实施例所提供的一种窗口识别方法的实施流程图,该方法可以包括以下步骤:
52.s110:获得目标展示页面的根视图。
53.应用在运行时,通过终端屏幕向用户展示各种页面,可以认为每个展示页面均是由根视图和多个子视图构成。如果将根视图和子视图通过树形结构表示,则根视图为最顶层的视图,其下可以有多个层级的子视图,每个层级的子视图可以作为其下一个层级的子视图的父视图。在展示出的页面中,根视图为最底层的视图,其上可以有多个层级的子视图。如图2所示,展示页面w由根视图v和子视图v1、v2、v3、v4构成,其中,v1、v2、v3为根视图v的下一层级的子视图,v4为子视图v3的下一层级的子视图,子视图v3为子视图v4的父视图。
54.根视图最先被创建,每个子视图被创建后,会将其加入到父视图的子视图数组中。应用在要进行特定窗口识别时,如有其他特定窗口要展示时,可以根据各子视图数组中的关系,获得目标展示页面的根视图。
55.s120:依次遍历根视图的每个子视图,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中。
56.目标点为目标窗口类型的窗口在终端屏幕出现的预估位置点。
57.在本发明实施例中,目标窗口类型为待识别窗口的窗口类型,目标窗口类型可以是弹窗类、卡(card)类等。可以先确定目标窗口类型的窗口在终端屏幕出现的预估位置点,即guesspoint,将该预估位置点作为目标点。具体的,可以根据应用配置等信息,确定目标窗口类型的窗口在终端屏幕出现的预估位置点。以目标窗口类型为弹窗类,要识别普通的屏幕中央弹窗为例,预估位置点即目标点为终端屏幕的中心点,如图2所示的“*”表示的目标点。
58.获得目标展示页面的根视图后,可以依次遍历根视图的每个子视图。具体的,可以基于根视图对应的子视图数组,依次遍历根视图的每个子视图,提高遍历准确性。根视图对应的子视图数组可以包括根视图作为父视图的子视图数组和各子视图作为父视图的子视图数组。
59.针对遍历到的每个子视图,可以判断目标点是否处于当前子视图的展示区域中。具体的,可以根据当前子视图和目标点在终端屏幕的位置关系,判断目标点是否处于当前子视图的展示区域中。
60.s130:如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口。
61.每个子视图具有不同的窗口类型,如弹窗类、卡类等。根据子视图的属性信息,可以确定子视图所属的窗口类型。
62.可以理解的是,页面上的视图,包括根视图和各子视图,都是代码创建的,这些视图在创建的时候会明确指定其属性信息,比如对图片类视图会指定其为图片类型,对弹窗类视图会指定其为弹窗类型。可以通过视图的类(class)字段存储相应的属性信息。
63.所以,可以通过以下步骤判断当前子视图是否属于目标窗口类型:
64.通过读取当前子视图的类字段,获得当前子视图的属性信息;
65.根据当前子视图的属性信息,确定当前子视图是否属于目标窗口类型。
66.也就是说,针对遍历到的每个子视图,可以通过读取当前子视图的类字段,获得当前子视图的属性信息,然后根据当前子视图的属性信息,可以确定当前子视图的窗口类型,进而根据该窗口类型可以确定当前子视图是否属于目标窗口类型。提高了判断的准确性。当前子视图是指当前操作所针对的子视图。
67.获得目标展示页面的根视图,对根视图的每个子视图进行遍历,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中。如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。如果有其他属于目标窗口类型的窗口要展示,则可以控制其先不展示。
68.在依次遍历根视图的每个子视图的过程中,针对遍历到的每个子视图,确定目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型的情况下,即可确定目标展示页面上存在目标窗口类型的窗口,可以不再进行后续目标点是否处于子视图的展示区域中的判断。针对遍历到的每个子视图,如果目标点未处于当前子视图的展示区域中,或者当前子视图不属于目标窗口类型,则可以继续进行后续目标点是否处于子视图的展示区域中的判断,直至遍历到根视图的所有子视图。
69.应用本发明实施例所提供的方法,获得目标展示页面的根视图后,依次遍历根视图的每个子视图,针对遍历到的每个子视图,可以判断目标点是否处于当前子视图的展示区域中,目标点即为目标窗口类型的窗口在屏幕出现的预估位置点,如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。通过子视图与目标点的位置关系以及子视图的窗口类型,就可以准确识别出是否存在相应窗口,不需要通过标记位标记窗口的出现和消失,减少了对标记位的管理成本,避免因标记位过多引起的混乱问题,提高了窗口识别的准确性,提高了应用性能。
70.在本发明的一个实施例中,该方法还可以包括以下步骤:
71.如果目标点未处于根视图的各子视图的展示区域中,或者,展示区域包含目标点的子视图均不属于目标窗口类型,则确定目标展示页面上不存在目标窗口类型的窗口。
72.在本发明实施例中,获得目标展示页面的根视图,依次遍历根视图的每个子视图,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中。如果目标点未处于根视图的各子视图的展示区域中,则可以确定目标展示页面上不存在目标窗口类型的窗口。如果存在展示区域包含目标点的子视图,但展示区域包含目标点的子视图均不属于
目标窗口类型,则可以确定目标展示页面上不存在目标窗口类型的窗口。通过对目标展示页面上是否存在目标窗口类型的窗口的准确判断,有助于后续操作的正确进行,比如判断是否展示属于目标窗口类型的其他窗口。
73.在本发明的一个实施例中,判断目标点是否处于当前子视图的展示区域中,可以包括以下步骤:
74.确定当前子视图在屏幕坐标系中的视图坐标,以及当前子视图的视图尺寸,屏幕坐标系以终端屏幕的左上角为原点,向右为横轴的增加方向,向下为纵轴的增加方向,视图坐标包括当前子视图的左上角的横坐标和纵坐标,视图尺寸包括宽尺寸和高尺寸;
75.如果同时满足以下条件,则确定目标点处于当前子视图的展示区域中:
76.当前子视图的横坐标小于目标点的横坐标;
77.当前子视图的纵坐标小于目标点的纵坐标;
78.当前子视图的横坐标加上当前子视图的宽尺寸大于目标点的横坐标;
79.当前子视图的纵坐标加上当前子视图的高尺寸大于目标点的纵坐标。
80.为方便描述,将上述几个步骤结合起来进行说明。
81.在本发明实施例中,可以通过子视图与目标点的位置关系判断目标点是否处于子视图的展示区域中。可以预先建立屏幕坐标系,屏幕坐标系可以是以终端屏幕的左上角为原点,向右为横轴的增加方向,向下为纵轴的增加方向。
82.获得目标展示页面的根视图后,依次遍历根视图的每个子视图,针对遍历到的每个子视图,可以确定当前子视图在屏幕坐标系中的视图坐标,以及当前子视图的视图尺寸。视图坐标包括当前子视图的左上角的横坐标和纵坐标,视图尺寸包括宽尺寸和高尺寸。
83.目标点在屏幕坐标系中也有相应的横坐标和纵坐标。
84.根据当前子视图的视图坐标和视图尺寸,以及目标点的坐标,可以判断:
85.当前子视图的横坐标是否小于目标点的横坐标;
86.当前子视图的纵坐标是否小于目标点的纵坐标;
87.当前子视图的横坐标加上当前子视图的宽尺寸是否大于目标点的横坐标;
88.当前子视图的纵坐标加上当前子视图的高尺寸是否大于目标点的纵坐标。
89.如果当前子视图的横坐标小于目标点的横坐标,当前子视图的纵坐标小于目标点的纵坐标,当前子视图的横坐标加上当前子视图的宽尺寸大于目标点的横坐标,当前子视图的纵坐标加上当前子视图的高尺寸大于目标点的纵坐标,则可以认为当前子视图在终端屏幕上的位置可以覆盖到目标点在终端屏幕上的位置,可以确定目标点处于当前子视图的展示区域中。
90.举例而言,目标点在屏幕坐标系中的坐标为(p_x,p_y),当前子视图的视图坐标为(v_x,v_y),视图尺寸包括的宽尺寸为v_width,高尺寸为v_height。
91.如果同时满足以下条件,则可以确定目标点在当前子视图的展示区域中:
92.1)v_x《p_x;
93.2)v_y《p_y;
94.3)v_x v_width》p_x;
95.4)v_y v_height》p_y。
96.基于子视图的视图坐标和视图尺寸,以及目标点的坐标,可以准确确定出子视图
和目标点的位置关系,从而可以准确确定子视图的展示区域是否包含目标点,为进一步的窗口识别提供依据。
97.需要说明的是,屏幕坐标系可以根据实际情况进行设定,相应的,视图坐标和目标点的坐标需要跟随屏幕坐标系进行变换,对于子视图的展示区域是否包含目标点的判断条件也需进行相应变换。本发明实施例不再赘述。
98.在本发明的一个实施例中,依次遍历根视图的每个子视图,可以包括以下步骤:
99.依次遍历根视图的各个层级的每个子视图。
100.在本发明实施例中,如果将根视图和各子视图用树形结构表示,则根视图为最顶层的视图,其下可以有多个层级的子视图。在获得目标展示页面的根视图后,依次遍历根视图的每个子视图时,可以依次遍历根视图的各个层级的每个子视图。比如,图2中,v1、v2、v3为根视图v的下一层级的子视图,v4为子视图v3的下一层级的子视图,可以依次遍历根视图的各个层级的子视图v1、v2、v3和v4。这样遍历较为全面,可以提高窗口识别准确性。
101.在本发明的一个实施例中,依次遍历根视图的每个子视图,可以包括以下步骤:
102.依次遍历根视图的下一层级的每个第一子视图;
103.相应的,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中,可以包括以下步骤:
104.针对遍历到的每个第一子视图,判断目标点是否处于当前第一子视图的展示区域中;
105.相应的,如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口,可以包括以下步骤:
106.如果目标点处于当前第一子视图的展示区域中,且当前第一子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口。
107.在本发明实施例中,如果将根视图和各子视图用树形结构表示,则根视图为最顶层的视图,其下可以有多个层级的子视图。在获得目标展示页面的根视图后,依次遍历根视图的每个子视图时,可以依次遍历根视图的下一层级的每个第一子视图,根视图的下一层级的第一子视图可以有多个。比如,图2中,根视图v的下一层级的第一子视图包括v1、v2、v3,可以依次遍历根视图的下一层级的每个第一子视图v1、v2和v3。
108.依次遍历根视图的下一层级的每个第一子视图的过程中,针对遍历到的每个第一子视图,可以判断目标点是否处于当前第一子视图的展示区域中,如果目标点处于当前第一子视图的展示区域中,且当前第一子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。当前第一子视图为当前操作所针对的第一子视图。
109.因为根视图的下一层级的第一子视图在终端屏幕上占的面积较大,数量较少,对根视图的下一层级的每个第一子视图进行遍历,可以快速判断出目标点是否处于某个第一子视图的展示区域中,快速判断目标展示页面上是否存在目标窗口类型的窗口,提高窗口识别效率。
110.各窗口类型的窗口产生后,都会作为一个子视图存在。对于任意一个子视图而言,通过对目标点是否处于该子视图的展示区域中进行判断,以及该子视图的窗口类型,可以确定目标展示页面上是否存在目标窗口类型的窗口。
111.在本发明的一个实施例中,在目标点处于当前第一子视图的展示区域中的情况
下,该方法还可以包括以下步骤:
112.步骤一:如果当前第一子视图不属于目标窗口类型,则令i=1,依次遍历当前第i子视图的下一层级的每个第i 1子视图,针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于目标窗口类型,i为正整数;
113.步骤二:如果当前第i 1子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口。
114.为方便描述,将上述两个步骤结合起来进行说明。
115.在本发明实施例中,获得目标展示页面的根视图后,依次遍历根视图的下一层级的每个第一子视图,针对遍历到的每个第一子视图,判断目标点是否处于当前第一子视图的展示区域中。如果目标点处于当前第一子视图的展示区域中,且当前第一子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。在目标点处于当前第一子视图的展示区域中的情况下,如果当前第一子视图不属于目标窗口类型,则可以认为当前第一子视图不是要识别的目标窗口类型的窗口,对于目标展示页面上是否存在目标窗口类型的窗口,还需要做进一步判断。在这种情况下,可以令i=1,依次遍历当前第i子视图的下一层级的每个第i 1子视图,即依次遍历当前第一子视图的下一层级的每个第二子视图。在依次遍历当前第一子视图的下一层级的每个第二子视图之前,可以先判断当前第一子视图是否存在下一层级的子视图,如果存在,则依次遍历当前第一子视图的下一层级的每个第二子视图,以避免不必要的资源消耗。
116.针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于目标窗口类型。当前第i 1子视图为当前操作所针对的第i 1子视图。如果当前第i 1子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。即在i=1时,针对遍历到的每个第二子视图,判断当前第二子视图是否属于目标窗口类型,如果第二子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口。
117.如果当前第i子视图的下一层级的每个第i 1子视图均不属于目标窗口类型,则针对当前第i子视图的下一层级的每个第i 1子视图,如果当前第i 1子视图存在下一层级的子视图,则令i=i 1,重复执行依次遍历当前第i子视图的下一层级的每个第i 1子视图,针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于目标窗口类型,如果当前第i 1子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口的步骤。
118.比如,图2中,根视图v的下一层级的第一子视图包括v1、v2、v3,第一子视图v3的下一层级的第二子视图包括v4,“*”表示目标点,获得目标展示页面的根视图后,可以依次遍历根视图的下一层级的每个第一子视图v1、v2和v3,目标点未处于第一子视图v1和v2的展示区域中,处于第一子视图v3的展示区域中,如果第一子视图v3不属于目标窗口类型,则可以依次遍历第一子视图v3的下一层级的每个第二子视图,这里第一子视图v3的下一层级的第二子视图为v4,可以判断第二子视图v4是否属于目标窗口类型,如果属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口,如果不属于目标窗口类型,而且没有其他子视图可遍历,则可以确定目标展示页面上不存在目标窗口类型的窗口。
119.即获得目标展示页面的根视图后,依次遍历根视图的下一层级的每个第一子视图,针对根视图的下一层级的每个第一子视图,如果目标点处于当前第一子视图的展示区域中,则不再进行后续的目标点是否处于其他第一子视图的展示区域中的判断,而且可以
认为目标点也处于当前第一子视图的下一层级的每个第二子视图的展示区域中。
120.在当前第一子视图不属于目标窗口类型的情况下,依次遍历当前第一子视图的下一层级的每个第二子视图。针对遍历到的每个第二子视图,判断当前第二子视图是否属于目标窗口类型。如果当前第二子视图属于目标窗口类型,则不再进行后续的其他第二子视图是否属于目标窗口类型的判断,直接确定目标展示页面上存在目标窗口类型的窗口。
121.如果当前第一子视图的下一层级的每个第二子视图均不属于目标窗口类型,则针对当前第第一子视图的下一层级的每个第二子视图,如果当前第二子视图存在下一层级的子视图,则依次遍历当前第二子视图的下一层级的每个第三子视图,针对遍历到的每个第三子视图,判断当前第三子视图是否属于目标窗口类型。如果当前第三子视图属于目标窗口类型,则不再进行后续的其他第三子视图是否属于目标窗口类型的判断,直接确定目标展示页面上存在目标窗口类型的窗口。
122.依此递归进行判断,逐渐缩小要判断的视图范围,在很多情况下,不需要遍历所有子视图,确定出展示区域包含目标点的子视图后不需要再进行目标点是否处于其他子视图的展示区域中的判断,提高了窗口识别效率,提高了应用性能。
123.相应于上面的方法实施例,本发明实施例还提供了一种窗口识别装置,下文描述的窗口识别装置与上文描述的窗口识别方法可相互对应参照。
124.参见图3所示,该装置可以包括以下模块:
125.获得模块310,用于获得目标展示页面的根视图;
126.遍历模块320,用于依次遍历根视图的每个子视图,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中,目标点为目标窗口类型的窗口在终端屏幕出现的预估位置点;
127.识别模块330,用于在目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型的情况下,确定目标展示页面上存在目标窗口类型的窗口。
128.应用本发明实施例所提供的装置,获得目标展示页面的根视图后,依次遍历根视图的每个子视图,针对遍历到的每个子视图,可以判断目标点是否处于当前子视图的展示区域中,目标点即为目标窗口类型的窗口在屏幕出现的预估位置点,如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则可以确定目标展示页面上存在目标窗口类型的窗口。通过子视图与目标点的位置关系以及子视图的窗口类型,就可以准确识别出是否存在相应窗口,不需要通过标记位标记窗口的出现和消失,减少了对标记位的管理成本,避免因标记位过多引起的混乱问题,提高了窗口识别的准确性,提高了应用性能。
129.在本发明的一种具体实施方法中,还可以包括判断模块,用于通过以下步骤判断当前子视图是否属于目标窗口类型:
130.通过读取当前子视图的类字段,获得当前子视图的属性信息;
131.根据当前子视图的属性信息,确定当前子视图是否属于目标窗口类型。
132.在本发明的一种具体实施方法中,遍历模块320,用于:
133.基于根视图对应的子视图数组,依次遍历根视图的每个子视图。
134.在本发明的一种具体实施方式中,遍历模块320,用于:
135.依次遍历根视图的各个层级的每个子视图。
136.在本发明的一种具体实施方式中,遍历模块320,用于:
137.依次遍历根视图的下一层级的每个第一子视图;
138.针对遍历到的每个第一子视图,判断目标点是否处于当前第一子视图的展示区域中;
139.识别模块330,用于:
140.在目标点处于当前第一子视图的展示区域中,且当前第一子视图属于目标窗口类型的情况下,确定目标展示页面上存在目标窗口类型的窗口。
141.在本发明的一种具体实施方式中,识别模块330,还用于:
142.在目标点处于当前第一子视图的展示区域中的情况下,如果当前第一子视图不属于目标窗口类型,则令i=1,依次遍历当前第i子视图的下一层级的每个第i 1子视图,针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于目标窗口类型,i为正整数;
143.如果当前第i 1子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口。
144.在本发明的一种具体实施方式中,识别模块330,还用于:
145.如果当前第i子视图的下一层级的每个第i 1子视图均不属于目标窗口类型,则针对当前第i子视图的下一层级的每个第i 1子视图,如果当前第i 1子视图存在下一层级的子视图,则令i=i 1,重复执行依次遍历当前第i子视图的下一层级的每个第i 1子视图,针对遍历到的每个第i 1子视图,判断当前第i 1子视图是否属于目标窗口类型,如果当前第i 1子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口的步骤。
146.在本发明的一种具体实施方式中,遍历模块320,用于:
147.确定当前子视图在屏幕坐标系中的视图坐标,以及当前子视图的视图尺寸,屏幕坐标系以终端屏幕的左上角为原点,向右为横轴的增加方向,向下为纵轴的增加方向,视图坐标包括当前子视图的左上角的横坐标和纵坐标,视图尺寸包括宽尺寸和高尺寸;
148.如果满足以下条件,则确定目标点处于当前子视图的展示区域中:
149.当前子视图的横坐标小于目标点的横坐标;
150.当前子视图的纵坐标小于目标点的纵坐标;
151.当前子视图的横坐标加上当前子视图的宽尺寸大于目标点的横坐标;
152.当前子视图的纵坐标加上当前子视图的高尺寸大于目标点的纵坐标。
153.在本发明的一种具体实施方式中,识别模块330,还用于:
154.如果目标点未处于根视图的各子视图的展示区域中,或者,展示区域包含目标点的子视图均不属于目标窗口类型,则确定目标展示页面上不存在目标窗口类型的窗口。
155.本发明实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
156.存储器403,用于存放计算机程序;
157.处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
158.获得目标展示页面的根视图;
159.依次遍历根视图的每个子视图,针对遍历到的每个子视图,判断目标点是否处于当前子视图的展示区域中,目标点为目标窗口类型的窗口在终端屏幕出现的预估位置点;
160.如果目标点处于当前子视图的展示区域中,且当前子视图属于目标窗口类型,则确定目标展示页面上存在目标窗口类型的窗口。
161.上述终端提到的通信总线404可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
162.通信接口402用于上述终端与其他设备之间的通信。
163.存储器403可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器403还可以是至少一个位于远离前述处理器的存储装置。
164.上述的处理器401可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
165.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的窗口识别方法的步骤。
166.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的窗口识别方法的步骤。
167.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
168.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
169.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部
分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
170.以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献