CN102521129B - 一种自绘窗口的测试方法和装置 - Google Patents
一种自绘窗口的测试方法和装置 Download PDFInfo
- Publication number
- CN102521129B CN102521129B CN201110405562.0A CN201110405562A CN102521129B CN 102521129 B CN102521129 B CN 102521129B CN 201110405562 A CN201110405562 A CN 201110405562A CN 102521129 B CN102521129 B CN 102521129B
- Authority
- CN
- China
- Prior art keywords
- com
- window
- painting
- interface
- pointer
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种自绘窗口的测试方法和装置,涉及领域计算机技术领域,传统非自绘窗口每个控件都有各自的句柄,可以通过句柄实现UI的自动化测试。而自绘窗口是没有窗口句柄的,本发明提供了一种支持自绘窗口的UI的自动化测试的方法。该方法包括:以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。本发明的技术方案,能够灵活实现自绘窗口,同时支持UI的自动化测试。
Description
技术领域
本发明涉及领域计算机技术领域,特别涉及一种自绘窗口的测试方法和装置。
背景技术
随着计算机硬件性能的不断提高,带动了各种UI(即:User Interface用户界面)技术的革新。特别在用户交互UI方面,各种赏心悦目的UI层出不穷,使用户在软件使用体验方面得到了大大的改善。通过这种友好的交互,不但提高了软件的品质,更提高了用户的忠诚度。可想而知,在未来,UI还是会作为软件开发的重中之重,对一个软件的好坏产生直接的影响。
在现有的各种UI技术中,自绘窗口是实现绚丽UI界面的一种常用方式。使用此技术实现了绚丽的界面的同时,也同时为UI的自动化测试带来了麻烦。传统非自绘窗口每个控件都有各自的句柄,可以通过句柄实现UI的自动化测试。而自绘窗口是没有窗口句柄的,因为需要使用新的方法来支持UI的自动化测试。
发明内容
本发明提供了一种自绘窗口测试的方法和装置,本发明的技术方案能够灵活实现自绘窗口,同时支持UI的自动化测试。
为达到上述目的,本发明的技术方案是这样实现的:
本发明公开了一种自绘窗口的测试方法,该方法包括:
以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;
测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
在上述方法中,该方法进一步包括:
为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;
则所述测试程序获取COM对象包括:测试程序获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据该队列中的各指针获取对应的COM对象。
在上述方法中,将该队列的指针设置到所述自绘窗口中的特定属性中包括:
通过Windows API函数中的SetProp函数将该队列的指针设置到自绘窗口中的特定属性中。
在上述方法中,所述测试程序获取所述自绘窗口中的特定属性中的值包括:
测试程序通过Windows API函数中的GetProp函数获取自绘窗口中的特定属性中的值。
在上述方法中,所述COM接口包括:
控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。
在上述方法中,COM接口由一个基COM接口派生;
该基COM接口包括所述每个COM接口对应的方法。
在上述方法中,所述调用COM对象的COM接口对相应控件进行测试包括:
通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试。
本发明还公开了一种自绘窗口的测试装置,该装置包括:COM封装模块和测试模块;
COM封装模块,用于以COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;
测试模块,用于获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
在上述装置中,COM封装模块,进一步为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;
则测试模块,用于获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据所述队列中的各指针获取对应的COM对象。
在上述装置中,COM封装模块,用于通过Windows API函数中的SetProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;
测试模块,用于通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
综上可见,本发明公开一种自绘窗口的测试方法,该方法包括:以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。本发明的技术方案,能够灵活实现自绘窗口,同时支持UI的自动化测试。
附图说明
图1是本发明实施例中的一种自绘窗口的测试的方法流程图。
图2本发明实施例中的一种自绘窗口的测试装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例中的一种自绘窗口的测试方法流程图,如图1所示,使用如下方式来实现自绘窗口,以支持UI的自动化测试:
101,以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;COM接口包括:控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。。
102,测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。。
也就是说,自绘窗口中所有的控件都以COM的方式实现,一个控件就是一个COM对象。这样测试程序可以在得到每个COM对象后,调用COM接口来实现对控件的操作,以实现自动化测试。
为实现测试程序能够获取COM对象,首先,应为自绘窗口中的每个COM对象分配一个相应的指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在该自绘窗口中设置一个特定的属性,将上述队列的指针设置到该自绘窗口中的特定属性中。
设置属性值函数是SetProp函数,其功能:该函数在指定窗口的属性表中增加一个新项,或者修改一个现有项。如果指定的字符串不在属性表中,那么就增加该新的项,新项中包含该字符串和句柄,否则就用指定的句柄替换该字符串的全前句柄。
因此,可通过Windows API函数中的SetProp函数将该队列的指针设置到该自绘窗口中的特定属性中。
此时,测试程序可采用以下方式获取COM对象:测试程序获取该自绘窗口中的特定属性中的值,根据该值找到该队列,根据该队列中的各指针获取对应的COM对象。
获取属性值函数是GetProp函数,其功能:该函数从给定窗口的属性列表中检索数据句柄。给定的字符串标识了要检索的句柄。该字符串和句柄必须在前一次调用SetProp函数时已经加到属性表中。
因此,测试程序通过Windows API函数中的GetProp函数来获取该自绘窗口中的特定属性中的值。
简单的说,可以采用先将COM对象指针形成的队列的指针设置到该自绘窗口的属性表中,再通过GetProp函数获取上述根据SetProp函数设置的该队列指针对应的属性值来获取该队列,并通过此队列得到所有控件的COM队形的方式,实现测试软件获取COM对象。
同时,为了实现测试程序获取控件的COM对象后,能够调用控件的COM接口对该控件进行操作,COM接口应由一个基COM接口派生;且基COM接口包括每个COM接口对应的方法,可通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试。
图2本发明实施例中的一种自绘窗口的测试装置的结构图,如图2所示,该装置包括:COM封装模块201和测试模块202。
COM封装模块201,用于以COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;
测试模块202,用于获取COM对象后,调用COM对象的COM接口对相应控件进行测试。
为实现测试程序获取COM对象,可采用以下方式:
COM封装模块201,进一步为自绘窗口中的每个COM对象分配一个指针,将自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在自绘窗口中设置一个特定的属性,将上述队列的指针设置到该自绘窗口中的特定属性中;
则测试模块202,用于获取所述自绘窗口中的特定属性中的值,根据该值找到上述队列,根据该队列中的各指针获取对应的COM对象。
在上述装置中,COM封装模块201,用于通过Windows API函数中的SetProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;
测试模块202,用于通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
在COM封装模块201中定义的各COM对象的COM接口包括:控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。这些COM接口由一个基COM接口派生。
为了实现测试模块202能够调用COM对象的COM接口对相应控件进行测试,可采用以下方式:派生COM接口的基COM接口包括每个COM接口对应的方法,通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试。
综上可见,本发明公开一种自绘窗口的测试方法,该方法包括:以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口,测试程序获取COM对象后,调用COM对象的COM接口对相应控件进行测试。本发明的技术方案,能够灵活实现自绘窗口,同时支持UI的自动化测试。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (5)
1.一种自绘窗口的测试方法,其特征在于,该方法包括:
以组件对象模型COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;
为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;
测试程序获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据所述队列中的各指针获取对应的COM对象,调用COM对象的COM接口对相应控件进行测试;
其中,所述将该队列的指针设置到所述自绘窗口中的特定属性中包括:
通过Windows API函数中的SetProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;
所述测试程序获取所述自绘窗口中的特定属性中的值包括:
所述测试程序通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
2.根据权利要求1所述的方法,其特征在于,所述COM接口包括:
控件类型接口、控件ID接口、控件名称接口、控件在窗口的位置接口、控件状态接口、控件支持的事件与消息接口。
3.根据权利要求2的方法,其特征在于,
所述COM接口由一个基COM接口派生;
所述基COM接口包括所述每个COM接口对应的方法。
4.根据权利要求3所述的方法,其特征在于,所述调用COM对象的COM接口对相应控件进行测试包括:
通过操作基COM接口中每个COM接口对应的方法实现调用COM对象的COM接口,进而实现对相应控件进行测试。
5.一种自绘窗口的测试装置,其特征在于,该装置包括:COM封装模块和测试模块;
COM封装模块,用于以COM形式封装自绘窗口中的每个控件,则一个控件就是一个COM对象,并定义各COM对象的COM接口;为自绘窗口中的每个COM对象分配一个指针,将该自绘窗口中的所有COM对象的指针放入一个队列中,为该队列分配一个指针,在所述自绘窗口中设置一个特定的属性,将所述队列的指针设置到所述自绘窗口中的特定属性中;
则测试模块,用于获取所述自绘窗口中的特定属性中的值,根据该值找到所述队列,根据所述队列中的各指针获取对应的COM对象;调用COM对象的COM接口对相应控件进行测试;
COM封装模块,用于通过Windows API函数中的SetProp函数将该队列的指针设置到所述自绘窗口中的特定属性中;
测试模块,用于通过Windows API函数中的GetProp函数获取所述自绘窗口中的特定属性中的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110405562.0A CN102521129B (zh) | 2011-12-08 | 2011-12-08 | 一种自绘窗口的测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110405562.0A CN102521129B (zh) | 2011-12-08 | 2011-12-08 | 一种自绘窗口的测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521129A CN102521129A (zh) | 2012-06-27 |
CN102521129B true CN102521129B (zh) | 2014-10-22 |
Family
ID=46292060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110405562.0A Active CN102521129B (zh) | 2011-12-08 | 2011-12-08 | 一种自绘窗口的测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521129B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216828A (zh) * | 2013-06-03 | 2014-12-17 | 刘伟 | 一种对被测应用程序进行功能遍历的测试方法 |
CN105204984B (zh) * | 2014-06-17 | 2018-08-17 | 腾讯科技(深圳)有限公司 | 一种自绘控件测试方法和装置 |
CN109144864B (zh) * | 2018-08-13 | 2022-09-06 | 北京百度网讯科技有限公司 | 用于测试窗口的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590330A (en) * | 1994-12-13 | 1996-12-31 | International Business Machines Corporation | Method and system for providing a testing facility in a program development tool |
US5634002A (en) * | 1995-05-31 | 1997-05-27 | Sun Microsystems, Inc. | Method and system for testing graphical user interface programs |
CN101021786A (zh) * | 2007-03-15 | 2007-08-22 | 浪潮集团山东通用软件有限公司 | 一种调用通用构件的方法 |
CN100555219C (zh) * | 2008-01-21 | 2009-10-28 | 中兴通讯股份有限公司 | 原子操作封装装置和方法 |
CN101872358A (zh) * | 2010-06-02 | 2010-10-27 | 北京航空航天大学 | 用于计算机生成兵力仿真系统的数据池及其实现方法 |
-
2011
- 2011-12-08 CN CN201110405562.0A patent/CN102521129B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590330A (en) * | 1994-12-13 | 1996-12-31 | International Business Machines Corporation | Method and system for providing a testing facility in a program development tool |
US5634002A (en) * | 1995-05-31 | 1997-05-27 | Sun Microsystems, Inc. | Method and system for testing graphical user interface programs |
CN101021786A (zh) * | 2007-03-15 | 2007-08-22 | 浪潮集团山东通用软件有限公司 | 一种调用通用构件的方法 |
CN100555219C (zh) * | 2008-01-21 | 2009-10-28 | 中兴通讯股份有限公司 | 原子操作封装装置和方法 |
CN101872358A (zh) * | 2010-06-02 | 2010-10-27 | 北京航空航天大学 | 用于计算机生成兵力仿真系统的数据池及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102521129A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103543993B (zh) | 应用程序构建方法和系统 | |
CN103744659B (zh) | 一种卡片式管理应用入口的方法和设备 | |
WO2017133447A1 (zh) | 一种智能设备的控制方法及装置、计算机存储介质 | |
CN103559040A (zh) | 一种基于sdk快速构建移动互联网应用模块的系统和方法 | |
CN107786601B (zh) | 一种信息处理方法、终端及服务器 | |
CN102855648B (zh) | 一种图像处理方法及装置 | |
CN106293743A (zh) | 一种移动建模系统及构建移动应用并实现跨平台发布的方法 | |
CN104267898A (zh) | 一种快捷触发应用程序或应用程序功能的方法及装置 | |
CN103294335A (zh) | 用于创建快键菜单的设备和方法 | |
CN103914375A (zh) | 一种自绘界面软件的测试方法和装置 | |
CN101419620A (zh) | 一种屏蔽网页元素的方法及其装置 | |
CN102521129B (zh) | 一种自绘窗口的测试方法和装置 | |
WO2023040064A1 (zh) | OpenHarmony操作系统应用的无代码智能开发系统及其使用方法 | |
CN104461261A (zh) | 管理移动终端默认应用的系统及方法 | |
CN108108986A (zh) | 一种客户关系管理系统的设计方法、装置及电子设备 | |
WO2008043580A3 (en) | Method for generating a graphical user interface | |
CN104102734A (zh) | 数据展示方法及系统 | |
CN104965813B (zh) | 文字素材的处理方法和装置 | |
CN103425490B (zh) | 基于crm系统中运行对象数据的管理方法 | |
CN102929506A (zh) | 一种快速添加桌面元素至桌面的方法 | |
CN115130442A (zh) | 报表生成的方法、装置、存储介质及计算机设备 | |
CN102622233A (zh) | 自动生成适应于某交互终端设备用户界面的系统及方法 | |
CN104123394B (zh) | 用于数据库的报表文件的加工方法 | |
CN105912723A (zh) | 一种自定义字段的存储方法 | |
CN103761096B (zh) | 基于IBinder机制实现的自动输入方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |