CN104461892A - 自定义控件获取方法和装置 - Google Patents

自定义控件获取方法和装置 Download PDF

Info

Publication number
CN104461892A
CN104461892A CN201410779387.5A CN201410779387A CN104461892A CN 104461892 A CN104461892 A CN 104461892A CN 201410779387 A CN201410779387 A CN 201410779387A CN 104461892 A CN104461892 A CN 104461892A
Authority
CN
China
Prior art keywords
control
target widget
described target
parent window
self
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410779387.5A
Other languages
English (en)
Other versions
CN104461892B (zh
Inventor
宋兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201410779387.5A priority Critical patent/CN104461892B/zh
Publication of CN104461892A publication Critical patent/CN104461892A/zh
Application granted granted Critical
Publication of CN104461892B publication Critical patent/CN104461892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了一种自定义控件获取方法和装置,可以用于用户界面自动化测试。其中,自定义控件获取方法包括:获取目标控件的查询条件,其中,目标控件为待获取的自定义控件,查询条件为用于查询目标控件的条件;获取目标控件所在的父窗口;通过遍历父窗口的子控件来查询满足查询条件的控件,将满足查询条件的控件作为目标控件;在查询到目标控件之后,获取目标控件的位置属性,其中,位置属性为用于表示目标控件位置的属性;以及通过目标控件的位置属性获取目标控件的位置信息。通过本发明,解决了现有技术中无法获取到自定义控件的精确位置的问题,达到了获取到自定义控件的精确位置的效果。

Description

自定义控件获取方法和装置
技术领域
本发明涉及自动化测试领域,具体而言,涉及一种自定义控件获取方法和装置。
背景技术
在软件用户界面(UI)自动化测试过程中,为了准确地控制鼠标操作的位置,有一套获取被测对象上目标控件的位置的机制。一般的UI自动化测试通常会使用一些工具来获取这些对象的具体位置,例如:VisualStudio中的Spy++,或者AutoIt中的WindowsInfo工具。但是这些工具只能识别系统预设好的控件类型,如果界面上存在用户自己定义的控件类型,则不能够获取到控件的精确位置。
例如,如图1所示,“自定义控件”无法通过常规工具来获取,则通过其相对于父窗口左上角的相对位置的X、Y坐标来获取到控件的位置。相对坐标X、Y不够准确,即使在当前环境能够准确获取到该控件的具体位置,但是在不同分辨率的屏幕或其他环境下,这个相对坐标会有差异,这也就使得该方法获取到自定义控件的精确位置。
针对现有技术中无法获取到自定义控件的精确位置的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种自定义控件获取方法和装置,以解决现有技术中无法获取到自定义控件的精确位置的问题。
为了实现上述目的,根据本发明实施例的一个方面,提供了一种自定义控件获取方法,用于用户界面自动化测试。根据本发明的自定义控件获取方法包括:获取目标控件的查询条件,其中,所述目标控件为待获取的自定义控件,所述查询条件为用于查询所述目标控件的条件;获取所述目标控件所在的父窗口;通过遍历所述父窗口的子控件来查询满足所述查询条件的控件,将满足所述查询条件的控件作为所述目标控件;在查询到所述目标控件之后,获取所述目标控件的位置属性,其中,所述位置属性为用于表示所述目标控件位置的属性;以及通过所述目标控件的位置属性获取所述目标控件的位置信息。
进一步地,通过遍历所述父窗口的子控件来查询满足所述查询条件的控件包括:判断所述父窗口的子控件中是否存在容器型控件,所述容器型控件内包含有多个控件;以及如果判断出所述父窗口的子控件中存在所述容器型控件,则通过遍历所述父窗口的子控件和所述容器型控件中的多个控件来查询满足所述查询条件的控件。
进一步地,所述查询条件包括以下至少之一:所述目标控件的名称、所述目标控件的控件类型和所述目标控件的Text属性,通过遍历所述父窗口的子控件来查询满足所述查询条件的控件包括:调用所述父窗口的子控件的名称、控件类型和Text属性;将所述目标控件的名称、所述目标控件的控件类型和所述目标控件的Text属性分别与调用的所述父窗口的子控件的名称、控件类型和Text属性进行比对;以及如果所述父窗口的子控件的名称与所述目标控件的名称一致和/或所述父窗口的子控件的控件类型与所述目标控件的控件类型一致和/或所述父窗口的子控件的Text属性与所述目标控件的Text属性一致,则确定所述父窗口的子控件为所述目标控件。
进一步地,通过所述目标控件的位置属性获取所述目标控件的位置信息包括:使用所述目标控件定义的类调用所述目标控件内部的接口;以及通过调用的所述目标控件内部的接口获取所述目标控件的位置信息。
进一步地,在获取目标控件的查询条件之前,所述自定义控件获取方法还包括:获取所述目标控件的动态链接库,其中,所述动态链接库为记录有所述目标控件的位置信息的文件;将所述动态链接库引用到所述用户界面自动化测试工程,其中,通过所述目标控件的位置属性获取所述目标控件的位置信息包括:通过所述目标控件的位置属性从引用的所述动态链接库中获取所述目标控件的位置信息。
为了实现上述目的,根据本发明实施例的另一方面,提供了一种自定义控件获取装置,用于用户界面自动化测试。根据本发明的自定义控件获取装置包括:第一获取单元,用于获取目标控件的查询条件,其中,所述目标控件为待获取的自定义控件,所述查询条件为用于查询所述目标控件的条件;第二获取单元,用于获取所述目标控件所在的父窗口;查询单元,用于通过遍历所述父窗口的子控件来查询满足所述查询条件的控件,将满足所述查询条件的控件作为所述目标控件;第三获取单元,用于在查询到所述目标控件之后,获取所述目标控件的位置属性,其中,所述位置属性为用于表示所述目标控件位置的属性;以及第四获取单元,用于通过所述目标控件的位置属性获取所述目标控件的位置信息。
进一步地,所述查询单元包括:判断模块,用于判断所述父窗口的子控件中是否存在容器型控件,所述容器型控件内包含有多个控件;以及查询模块,用于如果判断出所述父窗口的子控件中存在所述容器型控件,则通过遍历所述父窗口的子控件和所述容器型控件中的多个控件来查询满足所述查询条件的控件。
进一步地,所述查询条件包括以下至少之一:所述目标控件的名称、所述目标控件的控件类型、所述目标控件的Text属性,所述查询单元包括:第一调用模块,用于调用所述父窗口的子控件的名称、控件类型和Text属性;比对模块,用于将所述目标控件的名称、所述目标控件的控件类型和所述目标控件的Text属性分别与调用的所述父窗口的子控件的名称、控件类型和Text属性进行比对;以及确定模块,用于如果所述父窗口的子控件的名称与所述目标控件的名称一致和/或所述父窗口的子控件的控件类型与所述目标控件的控件类型一致和/或所述父窗口的子控件的Text属性与所述目标控件的Text属性一致,则确定所述父窗口的子控件为所述目标控件。
进一步地,所述第四获取单元包括:第二调用模块,用于使用所述目标控件定义的类调用所述目标控件内部的接口;以及获取模块,用于通过调用的所述目标控件内部的接口获取所述目标控件的位置信息。
进一步地,所述自定义控件获取装置还包括:第五获取单元,用于在获取目标控件的查询条件之前,获取所述目标控件的动态链接库,其中,所述动态链接库为记录有所述目标控件的位置信息的文件;引用单元,用于将所述动态链接库引用到所述用户界面自动化测试工程,其中,所述第四获取单元还用于通过所述目标控件的位置属性从引用的所述动态链接库中获取所述目标控件的位置信息。
根据本发明实施例,先获取目标控件的查询条件,通过遍历父窗口的子控件来查询满足查询条件的控件,将满足查询条件的控件作为目标控件,在查询到目标控件之后,获取目标控件的位置属性,最后通过目标控件的位置属性获取目标控件的位置信息,这样,通过遍历父窗口的子控件来查找目标控件,然后利用目标控件的位置属性来获取目标控件的位置信息,以得到目标控件的精确位置,解决了现有技术中无法获取到自定义控件的精确位置的问题,达到了获取到自定义控件的精确位置的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种父窗口的示意图;
图2是根据本发明实施例的自定义控件获取方法的流程图;
图3是根据本发明实施例的一种自定义控件的示意图;以及
图4是根据本发明实施例的自定义控件获取装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种自定义控件获取方法。该自定义控件获取方法可以通过计算机设备实现,用于用户界面自动化测试。
图2是根据本发明实施例的自定义控件获取方法的流程图。如图2所示,该自定义控件获取方法包括步骤如下:
步骤S102,获取目标控件的查询条件。其中,目标控件为待获取的自定义控件,查询条件为用于查询目标控件的条件。
查询条件可以是例如目标控件的名称、控件类型、Test属性等,该条件可以是在自动化测试过程中,通过测试人员输入的或者选择的用于获取目标控件的条件。
步骤S104,获取目标控件所在的父窗口。
父窗口可以是一个窗体form,在该父窗口下可以包含有一个或者多个控件,这些控件可以是系统预设的控件,也可以是自定义控件。
步骤S106,通过遍历父窗口的子控件来查询满足查询条件的控件,将满足查询条件的控件作为目标控件。
在系统窗口中,所有控件都有一定的组织顺序,容器型控件含有很多子控件。父窗口作为容器型控件。在获取到目标控件所在的父窗口之后,通过遍历父窗口下的子控件来查询满足查询条件的控件,即目标控件。具体地,对父窗口中子控件检测一下是否符合想要找的查询条件,从而找出满足查询条件的自定义控件,以便于精确找到自定义控件的位置。如果父窗口的子控件中存在容器型控件,则在对父窗口的子控件遍历完后,在遍历其中的容器型控件内的子控件。
例如,对于windows系统的自定义控件,可以在获取到父窗口之后,通过Control.Controls接口来对父窗口中子控件进行遍历,找出满足查询条件的自定义控件。因为所有控件都继承与Control类型,因此都有Controls属性,如果父窗口的子控件中还存在着容器控件,则仍然可以利用Controls属性逐层在容器控件中进行遍历,直到找到目标自定义控件。其中,Control是一个类型,是C#中所有Windows控件的基类。Controls是属性,是当前Congrol类型实例的所有子控件的集合。由于自定义控件的基类是Control类型,因此能够调用Control类型的所有属性或函数。
步骤S108,在查询到目标控件之后,获取目标控件的位置属性。其中,位置属性为用于表示目标控件位置的属性。
步骤S110,通过目标控件的位置属性获取目标控件的位置信息。
在查询到目标控件之后,则可以获取目标控件的位置属性,该位置属性记载有目标控件的精确位置,利用该位置属性可以获取目标控件的位置信息,从而获取到目标控件的精确位置。
根据本发明实施例,先获取目标控件的查询条件,通过遍历父窗口的子控件来查询满足查询条件的控件,将满足查询条件的控件作为目标控件,在查询到目标控件之后,获取目标控件的位置属性,最后通过目标控件的位置属性获取目标控件的位置信息,这样,通过遍历父窗口的子控件来查找目标控件,然后利用目标控件的位置属性来获取目标控件的位置信息,以得到目标控件的精确位置,解决了现有技术中无法获取到自定义控件的精确位置的问题,达到了获取到自定义控件的精确位置的效果。
优选地,通过遍历父窗口的子控件来查询满足查询条件的控件包括:判断父窗口的子控件中是否存在容器型控件,容器型控件内包含有多个控件;如果判断出父窗口的子控件中存在容器型控件,则通过遍历父窗口的子控件和容器型控件中的多个控件来查询满足查询条件的控件。
由于父窗口的子控件中可能存在容器型控件,本发明实施例中,通过检测判断父窗口中是否存在容器型控件,如果存在容器型控件,则可以对父窗口中的子窗口和子窗口中的容器型窗口进行遍历,从而查找出满足查询条件的自定义控件,保证遍历查找的全面性,从而提高查找目标控件的精确性。
优选地,查询条件包括以下至少之一:目标控件的名称、目标控件的控件类型和目标控件的Text属性,通过遍历父窗口的子控件来查询满足查询条件的控件包括:调用父窗口的子控件的名称、控件类型和Text属性;将目标控件的名称、目标控件的控件类型和目标控件的Text属性分别与调用的父窗口的子控件的名称、控件类型和Text属性进行比对;以及如果父窗口的子控件的名称与目标控件的名称一致和/或父窗口的子控件的控件类型与目标控件的控件类型一致和/或父窗口的子控件的Text属性与目标控件的Text属性一致,则确定父窗口的子控件为目标控件。
本发明实施例中,以目标控件的名称、目标控件的控件类型和目标控件的Text属性作为查询条件,通过利用上述属性来对父窗口的子控件进行匹配查找,如果各属性中有一个属性一致,则认为查询到的控件为目标控件。
以Control类型的父窗口为例,由于自定义控件的基类是Control类型,因此能够调用Control类型的所有属性或函数,即,父窗口的子控件名称(Name属性)、控件类型(GetType()函数)和Text属性都是Control类型可以直接调用。
例如,要查找的自定义控件的名称(Name)为m_customControl;类型(GetType())为CustomClass;Text属性为“xyz”。那么我们在遍历父窗口的所有子控件时,只需要如下条件就能确定当前遍历到的子控件是否就是我们需要找的控件。
根据本发明实施例,利用目标控件的属性来匹配查询目标控件,从而可以提高查询的准确性。
优选地,通过目标控件的位置属性获取目标控件的位置信息包括:使用目标控件定义的类调用目标控件内部的接口;以及通过调用的目标控件内部的接口获取目标控件的位置信息。
自定义控件定义的类是开发人员根据研发项目实际需要确定的,其内部的属性和成员也都是根据不同需求提供的。上述中Control类型是基类,Controls接口是基类中提供的某一属性。自定义控件及其接口则可以提供更确切详细的类型及接口信息。这样,在查找到目标控件之后,可以使用目标控件定义的类调用自定义控件内部的接口,获取到目标控件的位置信息。
优选地,在获取目标控件的查询条件之前,自定义控件获取方法包括:获取目标控件的动态链接库,其中,动态链接库为记录有目标控件的位置信息的文件;将动态链接库引用到用户界面自动化测试工程,其中,通过目标控件的位置属性获取目标控件的位置信息包括:通过目标控件的位置属性从引用的动态链接库中获取目标控件的位置信息。
自定义控件所在动态链接库是开发人员在进行窗体程序开发时生成的dll文件。该文件包含什么样的自定义控件,包含哪些自定义控件是根据项目需要来确定的。因此测试人员在使用时只需要和开发人员确认测试的自定义控件是属于哪个dll动态链接库,再引用到测试工程中来就可以直接使用了。
由于有些自定义控件内部构件较为复杂,如图3所示的控件,该控件是一个经过开发人员封装的控件,如果我们不引用他具体类型的动态链接库,而通过基类Control仅能访问到它的Location属性(左上角坐标位置)和Bounds属性(上下左右范围)。而不能具体获取到里面X后紧跟的输入控件框的精确位置。如果引用了该控件所在的动态链接库,开发人员在开发该控件的时候肯定会提供X后紧跟的输入控件的精确位置,因此就能够解决精确定位控件内部构件的需求。
本发明实施例还提供了一种自定义控件获取装置。该装置可以通过计算机设备实现其功能。需要说明的是,本发明实施例的自定义控件获取装置可以用于执行本发明实施例所提供的自定义控件获取方法,本发明实施例的自定义控件获取方法也可以通过本发明实施例所提供的自定义控件获取装置来执行。本发明实施例的自定义控件获取装置可以用于用户界面自动化测试。
图4是根据本发明实施例的自定义控件获取装置的示意图。如图4所示,自定义控件获取装置包括:第一获取单元10、第二获取单元20、查询单元30、第三获取单元40和第四获取单元50。
第一获取单元10用于获取目标控件的查询条件,其中,目标控件为待获取的自定义控件,查询条件为用于查询目标控件的条件。
查询条件可以是例如目标控件的名称、控件类型、Test属性等,该条件可以是在自动化测试过程中,通过测试人员输入的或者选择的用于获取目标控件的条件。
第二获取单元20用于获取目标控件所在的父窗口。
父窗口可以是一个窗体form,在该父窗口下可以包含有一个或者多个控件,这些控件可以是系统预设的控件,也可以是自定义控件。
查询单元30用于通过遍历父窗口的子控件来查询满足查询条件的控件,将满足查询条件的控件作为目标控件。
在系统窗口中,所有控件都有一定的组织顺序,容器型控件含有很多子控件。父窗口作为容器型控件。在获取到目标控件所在的父窗口之后,通过遍历父窗口下的子控件来查询满足查询条件的控件,即目标控件。具体地,对父窗口中子控件检测一下是否符合想要找的查询条件,从而找出满足查询条件的自定义控件,以便于精确找到自定义控件的位置。如果父窗口的子控件中存在容器型控件,则在对父窗口的子控件遍历完后,在遍历其中的容器型控件内的子控件。
例如,对于windows系统的自定义控件,可以在获取到父窗口之后,通过Control.Controls接口来对父窗口中子控件进行遍历,找出满足查询条件的自定义控件。因为所有控件都继承与Control类型,因此都有Controls属性,如果父窗口的子控件中还存在着容器控件,则仍然可以利用Controls属性逐层在容器控件中进行遍历,直到找到目标自定义控件。其中,Control是一个类型,是C#中所有Windows控件的基类。Controls是属性,是当前Congrol类型实例的所有子控件的集合。由于自定义控件的基类是Control类型,因此能够调用Control类型的所有属性或函数。
第三获取单元40用于在查询到目标控件之后,获取目标控件的位置属性,其中,位置属性为用于表示目标控件位置的属性。
第四获取单元50用于通过目标控件的位置属性获取目标控件的位置信息。
在查询到目标控件之后,则可以获取目标控件的位置属性,该位置属性记载有目标控件的精确位置,利用该位置属性可以获取目标控件的位置信息,从而获取到目标控件的精确位置。
根据本发明实施例,先获取目标控件的查询条件,通过遍历父窗口的子控件来查询满足查询条件的控件,将满足查询条件的控件作为目标控件,在查询到目标控件之后,获取目标控件的位置属性,最后通过目标控件的位置属性获取目标控件的位置信息,这样,通过遍历父窗口的子控件来查找目标控件,然后利用目标控件的位置属性来获取目标控件的位置信息,以得到目标控件的精确位置,解决了现有技术中无法获取到自定义控件的精确位置的问题,达到了获取到自定义控件的精确位置的效果。
优选地,查询单元包括:判断模块,用于判断父窗口的子控件中是否存在容器型控件,容器型控件内包含有多个控件;以及查询模块,用于如果判断出父窗口的子控件中存在容器型控件,则通过遍历父窗口的子控件和容器型控件中的多个控件来查询满足查询条件的控件。
由于父窗口的子控件中可能存在容器型控件,本发明实施例中,通过检测判断父窗口中是否存在容器型控件,如果存在容器型控件,则可以对父窗口中的子窗口和子窗口中的容器型窗口进行遍历,从而查找出满足查询条件的自定义控件,保证遍历查找的全面性,从而提高查找目标控件的精确性。
优选地,查询条件包括以下至少之一:目标控件的名称、目标控件的控件类型、目标控件的Text属性,查询单元包括:第一调用模块,用于调用父窗口的子控件的名称、控件类型和Text属性;比对模块,用于将目标控件的名称、目标控件的控件类型和目标控件的Text属性分别与调用的父窗口的子控件的名称、控件类型和Text属性进行比对;以及确定模块,用于如果父窗口的子控件的名称与目标控件的名称一致和/或父窗口的子控件的控件类型与目标控件的控件类型一致和/或父窗口的子控件的Text属性与目标控件的Text属性一致,则确定父窗口的子控件为目标控件。
本发明实施例中,以目标控件的名称、目标控件的控件类型和目标控件的Text属性作为查询条件,通过利用上述属性来对父窗口的子控件进行匹配查找,如果各属性中有一个属性一致,则认为查询到的控件为目标控件。
根据本发明实施例,利用目标控件的属性来匹配查询目标控件,从而可以提高查询的准确性。
优选地,第四获取单元包括:第二调用模块,用于使用目标控件定义的类调用目标控件内部的接口;以及获取模块,用于通过调用的目标控件内部的接口获取目标控件的位置信息。
自定义控件定义的类是开发人员根据研发项目实际需要确定的,其内部的属性和成员也都是根据不同需求提供的。上述中Control类型是基类,Controls接口是基类中提供的某一属性。自定义控件及其接口则可以提供更确切详细的类型及接口信息。这样,在查找到目标控件之后,可以使用目标控件定义的类调用自定义控件内部的接口,获取到目标控件的位置信息。
优选地,自定义控件获取装置还包括:第五获取单元,用于在获取目标控件的查询条件之前,获取目标控件的动态链接库,其中,动态链接库为记录有目标控件的位置信息的文件;引用单元,用于将动态链接库引用到用户界面自动化测试工程,其中,第四获取单元还用于通过目标控件的位置属性从引用的动态链接库中获取目标控件的位置信息。
自定义控件所在动态链接库是开发人员在进行窗体程序开发时生成的dll文件。该文件包含什么样的自定义控件,包含哪些自定义控件是根据项目需要来确定的。因此测试人员在使用时只需要和开发人员确认测试的自定义控件是属于哪个dll动态链接库,再引用到测试工程中来就可以直接使用了。
由于有些自定义控件内部构件较为复杂,如图3所示的控件,该控件是一个经过开发人员封装的控件,如果我们不引用他具体类型的动态链接库,而通过基类Control仅能访问到它的Location属性(左上角坐标位置)和Bounds属性(上下左右范围)。而不能具体获取到里面X后紧跟的输入控件框的精确位置。如果引用了该控件所在的动态链接库,开发人员在开发该控件的时候肯定会提供X后紧跟的输入控件的精确位置,因此就能够解决精确定位控件内部构件的需求。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种自定义控件获取方法,其特征在于,用于用户界面自动化测试,其中,所述自定义控件获取方法包括:
获取目标控件的查询条件,其中,所述目标控件为待获取的自定义控件,所述查询条件为用于查询所述目标控件的条件;
获取所述目标控件所在的父窗口;
通过遍历所述父窗口的子控件来查询满足所述查询条件的控件,将满足所述查询条件的控件作为所述目标控件;
在查询到所述目标控件之后,获取所述目标控件的位置属性,其中,所述位置属性为用于表示所述目标控件位置的属性;以及
通过所述目标控件的位置属性获取所述目标控件的位置信息。
2.根据权利要求1所述的自定义控件获取方法,其特征在于,通过遍历所述父窗口的子控件来查询满足所述查询条件的控件包括:
判断所述父窗口的子控件中是否存在容器型控件,所述容器型控件内包含有多个控件;以及
如果判断出所述父窗口的子控件中存在所述容器型控件,则通过遍历所述父窗口的子控件和所述容器型控件中的多个控件来查询满足所述查询条件的控件。
3.根据权利要求1所述的自定义控件获取方法,其特征在于,所述查询条件包括以下至少之一:所述目标控件的名称、所述目标控件的控件类型和所述目标控件的Text属性,通过遍历所述父窗口的子控件来查询满足所述查询条件的控件包括:
调用所述父窗口的子控件的名称、控件类型和Text属性;
将所述目标控件的名称、所述目标控件的控件类型和所述目标控件的Text属性分别与调用的所述父窗口的子控件的名称、控件类型和Text属性进行比对;以及
如果所述父窗口的子控件的名称与所述目标控件的名称一致和/或所述父窗口的子控件的控件类型与所述目标控件的控件类型一致和/或所述父窗口的子控件的Text属性与所述目标控件的Text属性一致,则确定所述父窗口的子控件为所述目标控件。
4.根据权利要求1所述的自定义控件获取方法,其特征在于,通过所述目标控件的位置属性获取所述目标控件的位置信息包括:
使用所述目标控件定义的类调用所述目标控件内部的接口;以及
通过调用的所述目标控件内部的接口获取所述目标控件的位置信息。
5.根据权利要求1所述的自定义控件获取方法,其特征在于,在获取目标控件的查询条件之前,所述自定义控件获取方法还包括:
获取所述目标控件的动态链接库,其中,所述动态链接库为记录有所述目标控件的位置信息的文件;
将所述动态链接库引用到所述用户界面自动化测试工程,
其中,通过所述目标控件的位置属性获取所述目标控件的位置信息包括:通过所述目标控件的位置属性从引用的所述动态链接库中获取所述目标控件的位置信息。
6.一种自定义控件获取装置,其特征在于,用于用户界面自动化测试,其中,所述自定义控件获取装置包括:
第一获取单元,用于获取目标控件的查询条件,其中,所述目标控件为待获取的自定义控件,所述查询条件为用于查询所述目标控件的条件;
第二获取单元,用于获取所述目标控件所在的父窗口;
查询单元,用于通过遍历所述父窗口的子控件来查询满足所述查询条件的控件,将满足所述查询条件的控件作为所述目标控件;
第三获取单元,用于在查询到所述目标控件之后,获取所述目标控件的位置属性,其中,所述位置属性为用于表示所述目标控件位置的属性;以及
第四获取单元,用于通过所述目标控件的位置属性获取所述目标控件的位置信息。
7.根据权利要求6所述的自定义控件获取装置,其特征在于,所述查询单元包括:
判断模块,用于判断所述父窗口的子控件中是否存在容器型控件,所述容器型控件内包含有多个控件;以及
查询模块,用于如果判断出所述父窗口的子控件中存在所述容器型控件,则通过遍历所述父窗口的子控件和所述容器型控件中的多个控件来查询满足所述查询条件的控件。
8.根据权利要求6所述的自定义控件获取装置,其特征在于,所述查询条件包括以下至少之一:所述目标控件的名称、所述目标控件的控件类型、所述目标控件的Text属性,所述查询单元包括:
第一调用模块,用于调用所述父窗口的子控件的名称、控件类型和Text属性;
比对模块,用于将所述目标控件的名称、所述目标控件的控件类型和所述目标控件的Text属性分别与调用的所述父窗口的子控件的名称、控件类型和Text属性进行比对;以及
确定模块,用于如果所述父窗口的子控件的名称与所述目标控件的名称一致和/或所述父窗口的子控件的控件类型与所述目标控件的控件类型一致和/或所述父窗口的子控件的Text属性与所述目标控件的Text属性一致,则确定所述父窗口的子控件为所述目标控件。
9.根据权利要求6所述的自定义控件获取装置,其特征在于,所述第四获取单元包括:
第二调用模块,用于使用所述目标控件定义的类调用所述目标控件内部的接口;以及
获取模块,用于通过调用的所述目标控件内部的接口获取所述目标控件的位置信息。
10.根据权利要求6所述的自定义控件获取装置,其特征在于,所述自定义控件获取装置还包括:
第五获取单元,用于在获取目标控件的查询条件之前,获取所述目标控件的动态链接库,其中,所述动态链接库为记录有所述目标控件的位置信息的文件;
引用单元,用于将所述动态链接库引用到所述用户界面自动化测试工程,
其中,所述第四获取单元还用于通过所述目标控件的位置属性从引用的所述动态链接库中获取所述目标控件的位置信息。
CN201410779387.5A 2014-12-15 2014-12-15 自定义控件获取方法和装置 Active CN104461892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410779387.5A CN104461892B (zh) 2014-12-15 2014-12-15 自定义控件获取方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410779387.5A CN104461892B (zh) 2014-12-15 2014-12-15 自定义控件获取方法和装置

Publications (2)

Publication Number Publication Date
CN104461892A true CN104461892A (zh) 2015-03-25
CN104461892B CN104461892B (zh) 2018-04-03

Family

ID=52907981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410779387.5A Active CN104461892B (zh) 2014-12-15 2014-12-15 自定义控件获取方法和装置

Country Status (1)

Country Link
CN (1) CN104461892B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630674A (zh) * 2015-12-17 2016-06-01 北京奇虎科技有限公司 一种针对界面的测试方法和装置
WO2016131316A1 (zh) * 2015-07-21 2016-08-25 中兴通讯股份有限公司 一种java窗口控件的识别方法及装置
CN106155712A (zh) * 2015-03-26 2016-11-23 阿里巴巴集团控股有限公司 一种Windows控件属性的获取方法和装置
CN108363571A (zh) * 2018-01-02 2018-08-03 武汉斗鱼网络科技有限公司 一种基于智能过滤的控件布局方法及系统
CN108920333A (zh) * 2018-07-03 2018-11-30 京东方科技集团股份有限公司 事件状态监测方法、事件状态监测器
CN110704327A (zh) * 2019-10-11 2020-01-17 江苏赛诺格兰医疗科技有限公司 一种pet-ct系统控制软件自动化测试的辅助方法
CN111522482A (zh) * 2020-04-28 2020-08-11 科世达(上海)机电有限公司 Sap系统控件id获取方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164300A (zh) * 2011-12-13 2013-06-19 腾讯科技(深圳)有限公司 一种移动终端触摸屏自动测试方法及装置
CN103309797B (zh) * 2012-03-09 2016-05-04 阿里巴巴集团控股有限公司 用户界面自动化测试方法及装置
CN103455414B (zh) * 2012-06-04 2017-08-01 腾讯科技(深圳)有限公司 获取控件的逻辑位置的方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155712A (zh) * 2015-03-26 2016-11-23 阿里巴巴集团控股有限公司 一种Windows控件属性的获取方法和装置
WO2016131316A1 (zh) * 2015-07-21 2016-08-25 中兴通讯股份有限公司 一种java窗口控件的识别方法及装置
CN105630674A (zh) * 2015-12-17 2016-06-01 北京奇虎科技有限公司 一种针对界面的测试方法和装置
CN108363571A (zh) * 2018-01-02 2018-08-03 武汉斗鱼网络科技有限公司 一种基于智能过滤的控件布局方法及系统
CN108363571B (zh) * 2018-01-02 2022-02-18 武汉斗鱼网络科技有限公司 一种基于智能过滤的控件布局方法及系统
CN108920333A (zh) * 2018-07-03 2018-11-30 京东方科技集团股份有限公司 事件状态监测方法、事件状态监测器
CN108920333B (zh) * 2018-07-03 2022-04-22 京东方科技集团股份有限公司 事件状态监测方法、事件状态监测器
CN110704327A (zh) * 2019-10-11 2020-01-17 江苏赛诺格兰医疗科技有限公司 一种pet-ct系统控制软件自动化测试的辅助方法
CN111522482A (zh) * 2020-04-28 2020-08-11 科世达(上海)机电有限公司 Sap系统控件id获取方法、装置、设备及存储介质
CN111522482B (zh) * 2020-04-28 2022-01-07 科世达(上海)机电有限公司 Sap系统控件id获取方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN104461892B (zh) 2018-04-03

Similar Documents

Publication Publication Date Title
CN104461892A (zh) 自定义控件获取方法和装置
CN102945248B (zh) 用于对电子表格数据进行报告的自动关系检测
KR101337555B1 (ko) 객체 연관성을 이용한 증강 현실 제공 장치 및 방법
KR20180008480A (ko) 애플리케이션 관련 사용자 데이터를 추출하고 공유하기 위한 시스템 및 방법
KR101936605B1 (ko) 휴대용 단말기에서 콘텐츠 태깅 방법 및 장치
CN104951497A (zh) 用于构建文档的方法和装置
CN108596052A (zh) 一种物品查找方法、系统及终端设备
CN106407199A (zh) 网络文章评论处理方法及装置
US20180285965A1 (en) Multi-dimensional font space mapping and presentation
CN113535165A (zh) 界面生成方法、装置、电子设备及计算机可读存储介质
CN103294805A (zh) 数据仓库个性化维度表的创建方法和装置
CN107766106B (zh) 生成配置文件的方法和装置
CN107085599B (zh) Poi推荐方法、装置、设备及计算机可读存储介质
Park et al. Indoor positioning-based mobile resource movement data management system for smart factory operations management
CN105843826A (zh) 一种查找方法和装置
CN105739717A (zh) 信息输入方法和装置
CN113254009B (zh) 同类元素确定方法、装置、电子设备及存储介质
CN110968386A (zh) 导航栏的处理方法和系统
CN109670114B (zh) 制图规则推荐方法及装置
CN115686506A (zh) 一种数据显示方法、装置、电子设备和存储介质
CN108280101A (zh) 用户终端及网页图片资源加载装置与方法
CN110059272B (zh) 一种页面特征识别方法和装置
CN108319640B (zh) 根据用户偏好进行车源展现的方法及装置
CN110019492B (zh) 一种信息显示方法及装置
CN105224659A (zh) 信息获取方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: User-defined control acquiring method and device

Effective date of registration: 20190531

Granted publication date: 20180403

Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd.

Pledgor: Beijing Guoshuang Technology Co.,Ltd.

Registration number: 2019990000503

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: Beijing Guoshuang Technology Co.,Ltd.