一种获取控件的方法及装置制造方法及图纸

技术编号:8626000 阅读:133 留言:0更新日期:2013-04-25 23:06
本发明专利技术实施例公开了一种获取控件的方法及装置,属于计算机技术领域。所述获取控件的方法包括:根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件;递归遍历出所述第一封装控件中的第二基本控件,将所述第一基本控件和所述第二基本控件作为第三基本控件;根据所述第三基本控件获取当前界面的可见控件;在所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件。本发明专利技术实施例可以完整实现Android自动化测试,使得自动化覆盖率提高。

【技术实现步骤摘要】
一种获取控件的方法及装置
本专利技术涉及计算机
,特别涉及一种Android自动化测试中获取控件的方法及装置。
技术介绍
随着Android系统在手机领域的广泛使用,针对手机的Android自动化测试也变得越来越重要。目前在Android自动化测试中,大多数是基于控件的自动化测试,通过获取当前界面的特定控件,然后对控件触发相关操作来模拟人的操作,达到自动化效果。Android系统中的控件都是继承于基类View,所述控件包括基本控件和封装控件;封装控件包括多个子控件,且封装控件是将多个子控件封装在一起的控件,如图1所示,其中每个所述子控件可以为封装控件,也可以为基本控件,但是封装控件的最底层的子控件为基本控件。现有Android自动化测试中,Android系统一般是通过调用FindViewById()函数来获取当前界面的特定控件,但是FindViewById()函数仅仅针对Android系统的非封装控件(即基本控件);对于封装控件而言,调用FindViewById()函数无法获取到当前界面的封装控件中的子控件,于是就不能对子控件触发相关操作来实现自动化测试,只能终止Android自动化测试。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:现有Android自动化测试中,Android系统调用的FindViewById()函数只能获取当前界面的非封装控件(即基本控件),无法获取当前界面的封装控件中的子控件,使得Android自动化测试中的某些功能或场景无法自动化,自动化覆盖率减低。
技术实现思路
为了提高Android自动化测试中的自动化覆盖率,本专利技术实施例提供了一种获取控件的方法及装置。所述技术方案如下:一种获取控件的方法,包括:根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件;递归遍历出所述第一封装控件中的第二基本控件,将所述第一基本控件和所述第二基本控件作为第三基本控件;根据所述第三基本控件获取当前界面的可见控件;在所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件。一种获取控件的装置,包括:动态获取模块,用于根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件;第三基本控件获取模块,用于递归遍历出所述第一封装控件中的第二基本控件,将所述第一基本控件和所述第二基本控件作为第三基本控件;可见控件获取模块,用于根据所述第三基本控件获取当前界面的可见控件;获取模块:用于在所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件。本专利技术实施例提供的技术方案带来的有益效果是:本实施例在Android自动化测试中,通过递归遍历出封第一装控件中的第二基本控件来获取当前界面的所有基本控件;然后对所述所有基本控件执行相关处理后,根据预定属性信息获取到符合预定属性信息的基本控件,相比较现有技术而言,可以完整实现Android自动化测试,使得自动化覆盖率提高。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是现有技术提供的封装控件的结构示意图;图2是本专利技术实施例1提供的一种获取控件的方法实施例的流程图;图3是本专利技术实施例2提供的一种获取控件的方法实施例的流程图;图4是本专利技术实施例2提供的Activity组件上控件结构示意图;图5是本专利技术实施例3提供的一种获取控件的装置实施例的结构示意图;图6是本专利技术实施例4提供的一种获取控件的装置实施例的结构示意图。具体实施方式本专利技术实施例提供一种获取控件的方法及装置。为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。实施例1参考图2,图2是本专利技术实施例1提供的一种获取控件的方法实施例的流程图;本实施例应用于Android自动化测试中,所述获取控件的方法包括:S101:根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件。S102:递归遍历出所述第一封装控件中的第二基本控件,将所述第一基本控件和所述第二基本控件作为第三基本控件。S103:根据所述第三基本控件获取当前界面的可见控件。S104:所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件。本实施例在Android自动化测试中,通过递归遍历出第一封装控件中的第二基本控件来获取当前界面的所有基本控件;然后对所述所有基本控件执行相关处理后,根据预定属性信息获取到符合预定属性信息的基本控件,相比较现有技术而言,可以完整实现Android自动化测试,使得自动化覆盖率提高。实施例2参考图3,图3是本专利技术实施例2提供的一种获取控件的方法实施例的流程图;本实施例应用于Android自动化测试中,所述获取控件的方法包括:S201:根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件。动态获取信息以及动态调用对象的方法称为java反射机制;Java反射机制主要提供以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。在Android系统中,当应用程序运行时,应用程序对用户的响应都是由WindowManager(窗口管理者)处理,通过特定对象(例如:WindowManagerImpl类,但是并不局限于此)将所述响应透传给Android的Activity组件上的所有控件,所述控件包括基本控件和封装控件,如图4所示,图4是本专利技术实施例2提供的Activity组件上控件结构示意图。如图4所示,View(显示)0、View2、View3、View4和View5是Android系统中的基本控件;ViewGroup(显示组)1是封装控件,所述封装控件ViewGroup1中包括基本控件View3、View4和View5。其中所述Android系统中的基本控件包括:TextView(文本显示控件)、Button(按钮控件)、ImageButton(图片按钮控件)、ImageView(图片显示控件)、CheckBox(复选框控件)、RadioButton(单选框控件)和AnalogClock(钟表(带表盘的那种)控件);DigitalClock(电子表控件)。其中,所述WindowManager是应用程序的最上层窗口,参照Window的概念可以将WindowManager称为主窗口,其主要功能为输入法管理、新增删除窗口和活动窗口管理等。所述WindowManagerImpl类是WindowManager服务的代理,连接WindowManager和Activity之间的桥梁,负责两者之间的通信;所述WindowManagerImpl类包含Activity上的所有控件,所述所有控件包括基本控件和封装控件,所述所有控件可以存储在WindowManagerImpl类的私有变量中,但是并不局限于此。所述Activity组件是Android中最常用的组件,是应用程序的表示层,Activity一般通过View来实现应用程序的用户界面,相本文档来自技高网...
一种获取控件的方法及装置

【技术保护点】
一种获取控件的方法,其特征在于,包括:根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件;递归遍历出所述第一封装控件中的第二基本控件,将所述第一基本控件和所述第二基本控件作为第三基本控件;根据所述第三基本控件获取当前界面的可见控件;在所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件。

【技术特征摘要】
1.一种获取控件的方法,其特征在于,包括:根据Java反射机制,动态获取当前界面的第一基本控件和第一封装控件;递归遍历出所述第一封装控件中的第二基本控件,将所述第一基本控件和所述第二基本控件作为第三基本控件;根据所述第三基本控件获取当前界面的可见控件;在所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件,其中,所述递归遍历出所述第一封装控件中的第二基本控件包括:遍历所述第一封装控件中的子控件;判断所述子控件是否包含第二封装控件,如果是,递归遍历所述第二封装控件中的子控件,直至所述第二封装控件中的所有子控件均为基本控件为止;获取所述第一封装控件中的第二基本控件,其中所述第二基本控件为所述所有子控件。2.根据权利要求1所述的方法,其特征在于,所述根据所述第三基本控件获取当前界面的可见控件包括:删除所述第三基本控件中的不可见控件,获取所述当前界面的可见控件。3.根据权利要求1所述的方法,其特征在于,所述预定属性信息包括:控件的ID信息、控件的文字信息或控件的图片信息。4.根据权利要求1所述的方法,其特征在于,所述在所述当前界面的可见控件中查找并获取符合预定属性信息的基本控件之后进一步包括:触发所述符合预定属性信息的基本控件,进行Android自动化测试。5.一种获取控件的装置,其特征在于,包括:动态获取模块,用于根据Java反射机制,动态获取当前界面的...

【专利技术属性】
技术研发人员:丁如敏
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1