当前位置: 首页 > 专利查询>中南大学专利>正文

基于Appium的安卓应用自动化触发执行方法技术

技术编号:19488991 阅读:183 留言:0更新日期:2018-11-17 12:00
本发明专利技术公开了一种基于Appium的安卓应用自动化触发执行方法,包括获取待执行安卓应用程序的全部Activity组件名称并生成启动参数文件并启动执行;获取待执行安卓应用的GUI信息及控件元素的信息并生成唯一标识;生成待执行应用的模拟操作事件并压栈存储;执行模拟操作事件;输出遍历结果。本发明专利技术本发明专利技术方法能够自动对安卓应用进行自动化触发执行,而且算法科学可靠,Activity组件的覆盖率极高。

【技术实现步骤摘要】
基于Appium的安卓应用自动化触发执行方法
本专利技术具体涉及一种基于Appium的安卓应用自动化触发执行方法。
技术介绍
随着移动互联网向交通、支付、教育、医疗等诸多领域的渗透,搭载安卓(Android)系统的智能移动终端的普及,Andorid应用在生活中起到越来越重要的作用。然而,Android应用良莠不齐,有许多质量偏低甚至携带恶意行为的Android应用存在。如果需要对携带恶意行为的Android应用进行鉴别,运行安卓应用并根据该安卓应用的具体行为特征进行鉴别是较为可靠的手段之一。但是,如果进行人工鉴别,则需要人工首先下载并安装该安卓应用,然后人工测试该安卓应用的所有动作并进行鉴别。但是,人工检测不仅费时费力,而且极易造成漏检等行为。为了更好的对安卓应用进行测试,近年来很多学者针对Android应用测试进行了大量研究工作,而Android应用自动化触发执行方法的研究就是其中的一个重要方向。目前的Android应用自动化触发执行方法仅针对简单的原生控件进行单个控件的自动触发,如按钮控件Button、文本控件TextView、图片控件ImageView等,并没有考虑其他控件的自动化触发执行及控件之间的关联关系,如混合应用所用到的网页视图控件WebView中可触发的非Android原生控件、列表控件ListView的每个Item及其内部控件都是可触发执行的,编辑控件EditText输入的测试数据是与其他关联控件的语义有关联的等;另外,由于待执行应用中Activity组件关系图的是森林,单次图形用户界面(GUI)控件触发并不能覆盖所有Activity组件,造成Activity组件覆盖率低的问题。
技术实现思路
本专利技术的目的在于提供一种能够自动对安卓应用进行自动化触发执行的基于Appium的安卓应用自动化触发执行方法。本专利技术提供的这种基于Appium的安卓应用自动化触发执行方法,包括如下步骤:S1.获取待执行Android应用程序的全部Activity组件名称并生成启动参数文件,将待执行Android应用程序在Appium框架下自动启动执行;S2.获取待执行Android应用的GUI信息及控件元素的信息,并生成GUI唯一标识;S3.动态生成待执行应用的模拟操作事件,并进行压栈存储;S4.在Appium框架下按照深度遍历算法依次执行步骤S3得到的模拟操作事件,从而对待执行应用进行自动触发测试;S5.输出遍历结果,从而完成安卓应用的自动化触发执行。步骤S1所述的获取全部Activity组件名称、生成启动参数文件并自动启动执行Android应用程序,具体包括如下步骤:A.获取待执行应用内含有的Activity组件,存入自定义的ActivityList数据结构中;B.配置应用启动与动态执行过程中需要的信息,并启动安卓应用自动执行。步骤A所述的获取待执行应用内含有的Activity组件存入自定义的ActivityList数据结构中,具体为解压待执行应用的Android安装包(APK),获得其中的AndroidManifest.xml文件,逆向处理该文件,分析获得应用内部包含的全部Activity组件名称,存入到自定义的ActivityList数据结构中,用于比较和建立Activity组件的触发路径。步骤B所述的配置应用启动与动态执行过程中需要的信息并启动安卓应用自动执行,具体为利用Appium获取待执行应用的包名,把启动进入图形界面所在的Activity组件名称和应用主界面所在的Activity组件名称写入启动参数文件data.properties中;将存在的编辑控件EditText提示信息和其输入值,以键值对的形式写入EditContent.txt中;最后根据启动参数文件和开源工具Appium的driver.startActivity()方法启动待执行的安卓应用。步骤S2所述的获取待执行Android应用的GUI信息及控件元素的信息并生成GUI唯一标识,具体包括如下步骤:a.获取当前GUI下控件元素信息和GUI所在的Activity组件名称;b.生成当前GUI的唯一标识并存储。步骤a所述的获取当前GUI下控件元素信息和GUI所在的Activity组件名称,具体为通过开源工具Appium获取当前GUI下,包括Android原生控件和网页视图控件WebView中所包含的非Android原生控件在内的,所有可见控件元素的信息,将当前GUI下的布局信息以xml格式的字符串返回,采用树形结构描述控件之间的关系以及每个控件的属性,最后利用安卓调试桥工具(ADB)获得当前GUI所在的Activity组件名。步骤S3所述的动态生成待执行应用的模拟操作事件并进行压栈存储,具体包括如下步骤;(1)对编辑控件EditText生成模拟操作事件Event;(2)对列表控件ListView生成模拟操作事件Event;(3)对剩余的其他控件生成模拟操作事件Event。步骤(1)所述的对编辑控件EditText生成模拟操作事件Event,具体包括如下步骤:A:生成执行输入操作的模拟操作事件Event;B:生成执行其他操作的模拟操作事件Event;步骤A所述的生成执行输入操作的模拟操作事件Event具体为首先获取编辑控件EditText的输入提示信息,当编辑控件EditText的text属性值或content-desc属性值不为空时,则以此作为编辑控件EditText的输入提示信息,否则,根据编辑控件EditText坐标属性bounds寻找当前GUI下,坐标中心点位于编辑控件EditText左侧且与之距离最近的文本控件TextView,作为与编辑控件EditText存在语义关联的控件,获得其不为空的text属性值或content-desc属性值作为编辑控件EditText的输入提示信息;然后根据输入提示信息匹配EditContent.txt中写入的键值对,如果匹配成功,则以匹配到的值作为编辑控件EditText的测试数据,生成执行输入操作的模拟操作事件Event,否则分析输入提示信息,产生要求格式的随机输入字符串作为编辑控件EditText的测试数据,生成执行输入操作的模拟操作事件Event,最后将生成的Event压入EventStack栈中存储。步骤B所述的生成执行其他操作的模拟操作事件Event具体为判断编辑控件EditText的clickable属性、long-clickable属性和scrollable属性的值,从而生成执行相应操作的模拟操作事件Event,最后将生成的Event依次压入EventStack栈中存储。步骤(2)所述的对列表控件ListView生成模拟操作事件Event,具体包括如下步骤:a:对子项目Item生成模拟操作事件Event;b:对子项目Item中包含的控件生成模拟操作事件Event。步骤a所述对子项目Item生成模拟操作事件Event具体为判断列表控件ListView的clickable属性和long-clickable属性的值从而对其包含的每个子项目Item生成执行相应操作的模拟操作事件Event,在Event的bounds属性中存储Item所处位置,与Item的idenValue属性一起唯一确定It本文档来自技高网
...

【技术保护点】
1.一种基于Appium的安卓应用自动化触发执行方法,包括如下步骤:S1.获取待执行Android应用程序的全部Activity组件名称并生成启动参数文件,将待执行Android应用程序在Appium框架下自动启动执行;S2.获取待执行Android应用的GUI信息及控件元素的信息,并生成GUI唯一标识;S3.动态生成待执行应用的模拟操作事件,并进行压栈存储;S4.在Appium框架下按照深度遍历算法依次执行步骤S3得到的模拟操作事件,从而对待执行应用进行自动触发测试;S5.输出遍历结果,从而完成安卓应用的自动化触发执行。

【技术特征摘要】
1.一种基于Appium的安卓应用自动化触发执行方法,包括如下步骤:S1.获取待执行Android应用程序的全部Activity组件名称并生成启动参数文件,将待执行Android应用程序在Appium框架下自动启动执行;S2.获取待执行Android应用的GUI信息及控件元素的信息,并生成GUI唯一标识;S3.动态生成待执行应用的模拟操作事件,并进行压栈存储;S4.在Appium框架下按照深度遍历算法依次执行步骤S3得到的模拟操作事件,从而对待执行应用进行自动触发测试;S5.输出遍历结果,从而完成安卓应用的自动化触发执行。2.根据权利要求1所述的基于Appium的安卓应用自动化触发执行方法,其特征在于步骤S2所述的获取待执行Android应用的GUI信息及控件元素的信息并生成GUI唯一标识,具体包括如下步骤:a.获取当前GUI下所有控件元素信息和GUI所在的Activity组件名称;b.生成当前GUI的唯一标识并存储。3.根据权利要求1所述的基于Appium的安卓应用自动化触发执行方法,其特征在于步骤S3所述的动态生成待执行应用的模拟操作事件并进行压栈存储,具体为包括如下步骤;(1)对编辑控件EditText生成模拟操作事件Event;(2)对列表控件ListView生成模拟操作事件Event;(3)对除编辑控件和列表控件外的剩余控件生成模拟操作事件Event。4.根据权利要求3所述的基于Appium的安卓应用自动化触发执行方法,其特征在于步骤(1)所述的对编辑控件EditText生成模拟操作事件Event,具体为首先,获取编辑控件EditText的输入提示信息,当编辑控件EditText的text属性值或content-desc属性值不为空时,则以此作为编辑控件EditText的输入提示信息,否则根据编辑控件EditText坐标属性bounds寻找当前GUI下,坐标中心点位于编辑控件EditText左侧且与之距离最近的文本控件TextView,作为与编辑控件EditText存在语义关联的控件,获得其不为空的text属性值或content-desc属性值作为编辑控件EditText的输入提示信息;其次,根据输入提示信息匹配...

【专利技术属性】
技术研发人员:宋虹王焱景朱双
申请(专利权)人:中南大学
类型:发明
国别省市:湖南,43

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

1