CN108170593A - 应用程序运行的方法及装置 - Google Patents
应用程序运行的方法及装置 Download PDFInfo
- Publication number
- CN108170593A CN108170593A CN201711408022.1A CN201711408022A CN108170593A CN 108170593 A CN108170593 A CN 108170593A CN 201711408022 A CN201711408022 A CN 201711408022A CN 108170593 A CN108170593 A CN 108170593A
- Authority
- CN
- China
- Prior art keywords
- trigger event
- script
- content
- recorded
- event
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种应用程序运行的方法,应用于移动终端领域,该方法包括:当检测到触发事件时,确定触发事件的脚本内容是否需要录制,若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存录制的触发事件的脚本内容,然后回放已录制的触发事件的脚本内容,以使得触发事件被响应。本发明实施例提供了一种应用程序运行的方法及装置能够降低脚本制作过程中花费的时间以及精力,提升脚本制作的效率。
Description
技术领域
本发明涉及移动终端领域,具体而言,本发明涉及一种应用程序运行的方法及装置。
背景技术
随着信息技术的发展,互联网技术也随之发展,越来越多的网络软件开始投放使用。而在软件的开发过程中,测试工作在整个开发的生命周期中占用举足轻重的地位。软件自动化测试为软件测试的一个分支,软件自动化测试为通过测试脚本,自动测试软件的各项功能以发现其中存在缺陷的过程,又或者在游戏运行的过程中,通过运行辅助脚本,以在玩家玩游戏的过程中辅助玩家。
然而,软件自动化测试以及游戏的辅助运行均需要脚本,包括软件测试脚本以及游戏辅助脚本,在编写软件测试脚本以及辅助脚本的过程中,均需要编写事件的代码,花费大量的时间以及精力,从而导致脚本制作的效率较低。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
本发明的实施例根据第一个方面,提供了一种应用程序运行的方法,包括:
当检测到触发事件时,确定触发事件的脚本内容是否需要录制;
若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容;
回放已录制的触发事件的脚本内容,以使得触发事件被响应。
具体地,录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容的步骤,包括:
通过沙箱引擎的钩子函数拦截需录制的触发事件的脚本内容,并录制触发事件的脚本内容;
将已录制的触发事件的脚本内容进行二进制数据格式转换,并在预设数据文件中保存数据格式转换后的触发事件的脚本内容。
具体地,回放已录制的触发事件的脚本内容,以使得触发事件被响应,包括:通过沙箱引擎回放已录制的触发事件的脚本内容,以使得触发事件的脚本内容被响应。
具体地,回放已录制的触发事件的脚本内容,以使得触发事件被响应的步骤,包括:
从预设数据文件读取存储的已录制的触发事件的脚本内容数据;
将已录制的触发事件的脚本内容进行数据格式转换;
基于格式转换后的触发事件的脚本内容,构建触发事件的对象;
将构建的触发事件的对象,分发至对应的目标应用,以使得目标应用基于触发事件的对象,响应触发事件。
进一步地,若触发事件的脚本内容不需要录制,方法还包括:
将触发事件的脚本内容分发至对应的目标应用,以使得目标应用响应该触发事件。
进一步地,该方法还包括:加载目标应用,通过对目标应用的Activity进行hook,将目标应用的view替换为沙箱引擎view。
具体地,确定触发事件的脚本内容是否需要录制的方式,包括:
基于预设的触发事件的录制规则,确定触发事件的脚本内容是否需要录制,触发事件的录制规则包括:需进行录制的触发事件的标识信息。
本发明的实施例根据第二个方面,还提供了一种应用程序运行的装置,包括:
确定模块,用于当检测到触发事件时,确定触发事件的脚本内容是否需要录制;
录制模块,用于当确定模块确定触发事件的脚本内容需要录制时,录制触发事件的脚本内容;
保存模块,用于保存录制模块录制的触发事件的脚本内容;
回放模块,用于回放已录制的触发事件的脚本内容,以使得触发事件被响应。
具体地,录制模块,具体用于通过沙箱引擎的钩子函数拦截需录制的触发事件的脚本内容,并录制触发事件的脚本内容;
保存模块,具体用于将已录制的触发事件的脚本内容进行二进制数据格式转换,并在预设数据文件中保存数据格式转换后的触发事件的脚本内容。
具体地,回放模块,具体用于通过沙箱引擎回放已录制的触发事件的脚本内容,以使得触发事件被响应。
具体地,回放模块具体包括:读取单元、格式转换单元、构建单元、分发单元;
读取单元,用于从预设数据文件读取存储的已录制的触发事件的脚本内容;
格式转换单元,用于将读取单元读取的已录制的触发事件的脚本内容进行数据格式转换;
构建单元,用于基于格式转换单元格式转换后的触发事件的脚本内容,构建触发事件的对象;
分发单元,用于将构建单元构建的触发事件的对象,分发至对应的目标应用,以使得目标应用基于触发事件的对象,响应触发事件。
进一步地,当触发事件的脚本内容不需要录制时,装置还包括:分发模块;
分发模块,用于将触发事件的脚本内容分发至对应的目标应用,以使得目标应用响应触发事件。
进一步地,该装置还包括:加载模块、替换模块;
加载模块,用于加载目标应用;
替换模块,用于通过对目标应用的Activity进行hook,将目标应用的view替换为沙箱引擎view。
具体地,确定模块,具体用于基于预设的触发事件的录制规则,确定触发事件的脚本内容是否需要录制。
本发明的实施例根据第三个方面,还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现第一个方面应用程序运行的方法。
本发明的实施例根据第四个方面,还提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行如第一个方面所示的应用程序运行的方法对应的操作。
本发明提供了一种应用程序运行的方法及装置,与现有技术相比,本发明当检测到触发事件时,确定触发事件的脚本内容是否需要录制,若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容,然后回放已录制的触发事件的脚本内容,以使得触发事件被响应。即本发明当检测到触发事件时,通过真人实时录制触发事件,以制作软件测试脚本以及游戏制作脚本等,而不需要花费大量的时间以及精力去编码触发事件的代码,以制作软件测试脚本以及游戏制作脚本,从而可以降低脚本制作过程中花费的时间以及精力,进而可以提升脚本制作的效率。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的一种应用程序运行的方法流程图;
图2为本发明实施例的录制并回放触发事件的系统框架图;
图3为本发明实施例的一种应用程序运行的装置结构示意图;
图4为本发明实施例的另一种应用程序运行的装置结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
实施例一
本发明实施例提供了一种应用程序运行的方法,如图1所示,其中,
步骤101、当检测到触发事件时,确定触发事件的脚本内容是否需要录制。
对于本发明实施例,触发事件包括触摸事件以及点击事件。在本发明实施例中,该触摸事件适用于触控终端,例如,该触控终端可以为手机、平板电脑、游戏机以及掌上电脑等各种具备触控屏幕的电子设备。
对于本发明实施例,触摸事件为接触或者触摸状态改变时触发的一个事件,一个或者多个接触点的接触、移动、移除以及增加接触点等都会触发这样一个事件。其构造函数TouchEvent()用于产生一个TouchEvent对象。
对于本发明实施例,点击事件为在一个对象由上按下然后释放一个按钮时发生的事件。点击事件也会发生在一个控件的值改变时。对一个Form对象来说,该事件是在单击一个空白区或一个无效控件时发生。对一个控件来说,这类事件的发生是当单击控件对象的特定区域。该点击事件可以由鼠标、键盘、触控笔等进行触发。
对于本发明实施例,触发事件的脚本内容通过脚本语言编写,脚本语言为为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言,脚本语言在游戏的编写中被广泛使用。目前的游戏编程过程中大量使用游戏脚本来进行游戏程序的编写。例如在XX游戏中就使用了Lua脚本。
对于本发明实施例,在检测触发事件之前,还包括:加载目标应用,通过对目标应用的Activity进行hook,将目标应用的view替换为沙箱引擎view。
对于本发明实施例,加载目标应用对应的Activity以及View。在本发明实施例中,Activity为一个应用程序组件,是Android组件中最基本也是最为常见用的四大组件之一,Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过View来显示指定控件。在一个Android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
对于本发明实施例,钩子(Hook)是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,钩子机制允许应用程序截获处理window消息或特定事件。
对于本发明实施例,通过对目标应用的Activity进行hook,将目标应用的view替换为沙箱引擎view,如图2所示,系统Window获得触发事件的脚本内容后,先经过沙箱引擎View截获该触发事件的脚本内容,然后才可以发送至目标应用的View。在本发明实施例中,沙箱引擎View可以监听并截取目标应用应该接收到的所有触发事件分别对应的脚本内容。
具体地,确定触发事件的脚本内容是否需要录制的方式,包括:
基于预设的触发事件的录制规则,确定触发事件的脚本内容是否需要录制。其中,触发事件的录制规则包括:需进行录制的触发事件的标识信息。
例如,需进行录制的触发事件的标识信息包括touchDown事件以及touchMove事件对应的标识信息,若检测到touchDown事件,则确定该事件确定的脚本内容需要录制;若检测到touchUp事件,则确定该事件不需要录制。
对于本发明实施例,预设的触发事件的录制规则可以由用户进行设置,也可以由沙箱引擎View进行设置。在本发明实施例中不做限定。
对于本发明实施例,屏幕触摸事件包括触摸装置移动的速率、每个触摸点的触摸位置、每个触摸点所持续的时间、相邻的两个触摸点之间的时间间隔、多个触摸点所形成的触摸轨迹、触摸的手指序号。
步骤102、若触发事件需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容。
对于本发明实施例,当检测触发事件时,基于预设的触发事件的录制规则,确定需要进行录制的触发事件,并录制该触发事件的脚本内容,并实时保存所录制的触发事件的脚本内容。在本发明实施例,录制的触摸事件的脚本内容包括但不限于以下触摸事件:touchDown、touchMove、touchUp、touchStart、touchEnd以及touchCancel。
对于本发明实施例,存在几种类型的触摸事件用来表示触摸相关的改变已经发生,通常通过触摸事件类型TouchEvent.type来判断此次触摸的相关改变,其中如下所示:
1.touchStart
当用户放置接触点的时候被触发,Touch的target也是这时指定的,这次触摸过程中这个target都不会变,同时这个Touch的identifier也不会随着Touch状态的变化而变化。
2.touchEnd
当用户抬起手指(触笔)或者将手指移除触摸屏之外时触发,这次Event的target即Touch.target。
3.touchMove
当用户在触摸屏上移动接触点时触发,当Touch的半径(英文全称:radius)、旋转(英文全称:rotation)、角度(英文全称:angle)或者力度(英文全称:force)属性改变时也会触发。
其中,touchMove事件触发频率是浏览器规范,依赖于浏览器,不能依赖于这个时间间隔。
4.touchCancel
当接触点被某种意外扰乱时触发,这意外情况和硬件设备有关,和浏览器也有关,例如,意外事件的发生取消了Touch,比如提醒(英文全称:alert)事件;接触点离开了文档窗口并移入浏览器的用户界面(英文全称:User Interface,英文缩写:UI)区域、插件区域或者其他扩展区域;用户增加接触点(超过设备所能支持的个数)时,触摸列表(英文全称:TouchList)中最早的Touch被取消掉。
对于本发明实施例,在录制点击事件的过程中,所录制的内容是操作鼠标和键盘所产生的描述信息,该描述信息包含有设备标识、按键标识、操作类型、操作焦点的坐标信息等,其中,设备标识用于标识产生描述信息的输入设备,如键盘操作的描述信息、鼠标操作的描述信息等;按键标识是用于区别具体按键,如键盘中的具体按键以及鼠标上的左键、右键等;操作类型用于记录信息的种类,具体包括:按键的按下、放开以及鼠标的移动;操作焦点的坐标信息用来记录操作产生时的输入坐标信息。
对于本发明实施例,在录制点击事件的过程中,用于记录键盘或鼠标操作的最小单元称为事件,即在键盘或鼠标的操作中,将操作细分到不能再分解为止。根据鼠标和键盘操作方式的不同,鼠标操作的事件包括有鼠标移动事件,鼠标按键的按下事件,鼠标按键的放开事件,键盘操作的事件分为按键的按下事件与按键的放开事件。举例说明,如鼠标的移动过程,可以看成是光标在多个坐标点之间连续的移动,那么将光标从一个坐标点移动至相邻坐标点的操作就定义为一个鼠标移动事件。再比如,对键盘上某个按键的点击操作,可以分解为该按键的按下操作和放开操作,对应的就是该按键的按下事件和放开事件,而对按键的长按则可以分解成多个连续的该按键的按下事件和一个放开事件的组合。需要说明的是,在鼠标移动或是按键长按时,所分解出的多个鼠标移动事件和多个该按键的按下事件的具体个数,取决于录制该键鼠脚本的采样率,即单位时间内所采集的次数。例如,鼠标移动移动了2s的过程,如果采样率为100次/s,那么系统会对该鼠标的移动操作进行分解,每隔0.01s获取一次鼠标的当前坐标,将从上一次的坐标点移动至当前坐标点的过程记录为一个鼠标移动事件。同理,在键盘长按时,每隔一个采样周期就获取一次该按键的状态,为按下状态时就记录一个按下事件,直到有放开事件为止。
在录制触发事件的脚本内容时,需要确定并录制点击和/或触摸的区域以及按钮,例如游戏内的图标、场景等内容。在本发明实施例中,录制触发操作的过程中,需要确定点击和/或触摸的区域以及按钮的各个特征点以及各个特征点的颜色,其中,通过以下函数进行找色:函数:findColorInRegionFuzzy,用于模糊区域找色;函数:findMultiColorInRegionFuzzy,用于区域多点找色;函数:findMultiColorInRegionFuzzy2,用于区域多点找色;函数:findMultiColorInRegionFuzzyExt,用于高级区域多点找色;函数:findMultiColorInRegionFuzzyExt2高级区域多点找色;函数:getColor获取屏幕某点颜色值;函数:getColorRGB,用于获取颜色RGB。
进一步地,getColorRGB,函数功能:用于获取某点颜色值R,G,B值,函数语法:color_r,color_g,color_b=getColorRGB(x,y),其中各个参数说明如表一,表二所示。
表一
参数 | 类型 | 说明 |
x,y | 整数型 | 将获取颜色值的屏幕坐标 |
表二
返回值 | 类型 | 说明 |
color_r,color_g,color_b | 整数型 | 该点颜色的RGB值 |
进一步地,findColorInRegionFuzzy的函数功能:在指定区域中,寻找符合指定颜色的坐标,模糊查找;函数语法:x,y=findColorInRegionFuzzy(color,posandcolor,degree,x1,y1,x2,y2,hdir,vdir);各个参数说明详见表三、表四。
表三
表四
使用区域模糊找色函数时,常常会因为屏幕上有大量符合指定颜色的点而不能找到需要的坐标。该函数通过在寻找到一个符合指定颜色color的坐标后,进一步确认其周边点坐标的方式,来确定准确目标。
例如,现在我们在图像上找到了我们需要的一个按钮,这个按钮的样式是不变的,但是它的整体位置却会在整个屏幕上变化,现在我们想要在脚本运行时得到其坐标,首先确定一个参照点:颜色为0x181F85,坐标为(268,802),下表序号1。记录下来,继续寻找周边的几个参照点,以及与第一个参照点的相对坐标,分别为表五序号2~4:现在我们找到了需要的所有参照点:应用表五坐标写成多点找色脚本,用于就是在屏幕内(0,0->639,959)的范围内,去寻找我们定义的那个按钮的位置,具体如下所示:
x,y=findMultiColorInRegionFuzzy(0x181F85,
"29|1|0x00BBFE,103|-4|0x0B6BBE,65|9|0x150972",
100,0,0,639,959);
表五
序号 | 颜色 | 坐标 | 相对坐标 |
1 | 0x181F85 | (268,802) | (0,0) |
2 | 0x00BBFE | (297,803) | (29,1) |
3 | 0x0B6BBE | (371,798) | (103,-4) |
4 | 0x150972 | (333,811) | (65,9) |
这些偏移坐标和颜色点也不需要开发者手动去计算,可以使用IDE快速生成代码来识别游戏图标场景。
进一步地,findImageInRegionFuzzy的函数功能:在指定区域中,寻找指定的图案,返回其左上角顶点坐标,支持模糊查找;函数语法:x,y=findlmagelnRegionFuzzy(picpath,x1,y1,x2,y2,alpha),各个参数详见表六。
表六
findImageInRegionFuzzy这个函数使用更加简单,甚至不需要IDE,只需要将图标放入脚本的资源目录res下。picpath填写图标的文件名再设置其他参数就可以实现相同和findMultiColorInRegionFuzzy函数相同的效果,进一步省去了去选择颜色点的操作。
步骤103、回放已录制的触发事件的脚本内容,以使得触发事件被响应。
本发明实施例提供了一种应用程序运行的方法,与现有技术相比,本发明实施例当检测到触发事件时,确定触发事件的脚本内容是否需要录制,若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容,然后回放已录制的触发事件的脚本内容,以使得触发事件被响应。即本发明实施例当检测到触发事件时,通过真人实时录制触发事件,以制作软件测试脚本以及游戏制作脚本等,而不需要花费大量的时间以及精力去编码触发事件的代码,以制作软件测试脚本以及游戏制作脚本,从而可以降低脚本制作过程中花费的时间以及精力,进而可以提升脚本制作的效率。
实施例二
本发明实施例的另一种可能的实现方式,在实施例一所示的基础上,还包括实施例二所示的操作,其中,
步骤102具体包括:步骤1021(图中未标注)以及步骤1022(图中未标注),其中,
步骤1021、若触发事件的脚本内容需要录制,则通过沙箱引擎的钩子函数拦截需录制的触发事件,并录制触发事件。
具体地,当触发事件的脚本内容需要录制,则通过沙箱引擎View钩子函数拦截需录制的触发事件,并录制触发事件。
对于本发明实施例,由于每个用户的点击或者触摸习惯不同,通过录制触发事件的脚本内容,以实现此次操作触发脚本的录制,并且录制的触发事件的脚本内容作为软件测试中的脚本或者辅助脚本,可提升与本机的适配性。
步骤1022、将已录制的触发事件的脚本内容进行二进制数据格式转换,并在预设数据文件中保存数据格式转换后的触发事件的脚本内容。
例如,获取的触摸事件的原始脚本内容是字符与16进制数组成的字符串序列,不具备可读性及可修改性。因此录制的触摸事件的动态生成可执行的python脚本,以便于后期事件回放。从getevent获取的原始事件数据示例如下:
4244-540927:/dev/input/event0:0003 0000 0000009e
4244-541083:/dev/input/event0:0003 0001 000001c7
4244-541182:/dev/input/event0:0001 014a 00000001
4244-541283:/dev/input/event0:0000 0000 00000000
4244-573333:/dev/input/event0:0001 014a 00000000
4244-573473:/dev/input/event0:0000 0000 00000000
4246-190284:/dev/input/event0:0003 0000 00000080
4246-190440:/dev/input/event0:0003 0001 000000a4
4246-190541:/dev/input/event0:0001 014a 00000001
4246-190622:/dev/input/event0:0000 0000 00000000
4246-238300:/dev/input/event0:0001 014a 00000000
4246-238454:/dev/input/event0:0000 0000 00000000
4247-704749:/dev/input/event0:0003 0000 00000084
4247-704904:/dev/input/event0:0003 0001 0000011e
4247-705004:/dev/input/event0:0001 014a 00000001
4247-705085:/dev/input/event0:0000 0000 00000000
4247-750322:/dev/input/event0:0001 014a 00000000
4247-750408:/dev/input/event0:0000 0000 00000000
最终预期转化为类似如下的脚本内容:
KeyDown(102)
Delay(17)
KeyUp(102)
Delay(1563)
TouchDown(158,455)
Delay(33)
TouchUp()
Delay(1617)
TouchDown(128,164)
Delay(48)
TouchUp()
Delay(1466)
TouchDown(132,286)
Delay(46)
TouchUp()
对于本发明实施例,沙箱引擎View将数据格式转换后的触发事件按照表七的方式存储在外部存储器中。
表七
字段 | 长度byte | 说明 |
id | 1 | 触摸的手指序号 |
action | 1 | 触摸动作类型 |
x | 2 | x坐标 |
y | 2 | y坐标 |
delay | 8 | 与上一个事件的时间差 |
实施例三
本发明实施例的另一种可能的实现方式,在实施例一或实施例二所示的基础上,还包括实施例三所示的操作,其中,
步骤103具体包括:通过沙箱引擎回放已录制的触发事件,以使得触发事件被响应。
具体地,通过沙箱引擎view回放已录制的触发事件,以使得触发事件被响应。
具体地,回放已录制的触发事件的脚本内容,以使得触发事件被响应的步骤,包括:步骤1031(图中未标注)、步骤1032(图中未标注)、步骤1033(图中未标注)以及步骤1034(图中未标注),其中,
步骤1031、从预设数据文件读取存储的已录制的触发事件的脚本内容。
对于本发明实施例,通过沙箱引擎view从预设数据文件中读取存储的已录制的触发事件数据。
步骤1032、将已录制的触发事件的脚本内容进行数据格式转换。
对于本发明实施例,将预设数据文件中的存储的触发事件的脚本内容转换为存储之间触发事件的脚本内容的数据格式。在本发明实施例中,将从预设数据文件中读取的脚本内容进行数据格式转换,以使得目标应用可以执行该触发事件的脚本内容。
步骤1033、基于格式转换后的触发事件数据,构建触发事件的对象。
对于本发明实施例,构建触发事件的对象,即按照时延顺序重新模拟出安卓系统对应的触摸事件对象。
步骤1034、将构建的触发事件的对象,分发至对应的目标应用,以使得目标应用基于触发事件的对象,响应触发事件。
对于本发明实施例,在沙箱引擎View中重新分发构建的触发事件的对象,并重新分发至对应的目标应用,以使得目标应用View正常地响应模拟触发事件。
实施例四
本发明实施例的另一种可能的实现方式,在实施例一至实施例四任一实施例的基础上,还包括实施例四所示的操作,其中,
若触发事件的脚本内容不需要录制,将触发事件的脚本内容分发至对应的目标应用,以使得目标应用响应触发事件。
对于本发明实施例,在沙箱引擎View中,通过预设的触发事件的录制规则,确定需录制的触发事件的标识信息中并未包含当前触发事件的标识信息,即当前的触发事件的脚本内容不需要录制,则直接将该触发事件的脚本内容分发至对应的目标应用的View中,进行响应。
本发明实施例提供了一种应用程序运行的装置,如图3所示,包括:确定模块31、录制模块32、保存模块33、回放模块34,其中,
确定模块31,用于当检测到触发事件时,确定触发事件的脚本内容是否需要录制。
录制模块32,用于当确定模块31确定触发事件的脚本内容需要录制时,录制触发事件的脚本内容。
保存模块33,用于保存录制模块32录制的触发事件的脚本内容。
回放模块34,用于回放已录制的触发事件的脚本内容,以使得触发事件被响应。
具体地,录制模块32,具体用于通过沙箱引擎的钩子函数拦截需录制的触发事件的脚本内容,并录制触发事件的脚本内容。
保存模块33,具体用于将已录制的触发事件的脚本内容进行二进制数据格式转换,并在预设数据文件中保存数据格式转换后的触发事件的脚本内容。
具体地,回放模块34,具体用于通过沙箱引擎回放已录制的触发事件的脚本内容,以使得触发事件被响应。
具体地,如图4所示,回放模块34具体包括:读取单元341、格式转换单元342、构建单元343、分发单元344,其中,
读取单元341,用于从预设数据文件读取存储的已录制的触发事件的脚本内容。
格式转换单元342,用于将读取单元341读取的已录制的触发事件的脚本内容进行数据格式转换。
构建单元343,用于基于格式转换单元342格式转换后的触发事件的脚本内容,构建触发事件的对象。
分发单元344,用于将构建单元343构建的触发事件的对象,分发至对应的目标应用,以使得目标应用基于触发事件的对象,响应触发事件。
进一步地,当触发事件的脚本内容不需要录制时,如图4所示,该装置还包括:分发模块41,其中,
分发模块41,用于将触发事件的脚本内容分发至对应的目标应用,以使得目标应用响应触发事件。
具体地,确定模块31,具体用于基于预设的触发事件的录制规则,确定触发事件的脚本内容是否需要录制。
本发明实施例提供了一种应用程序运行的装置,与现有技术相比,本发明实施例当检测到触发事件时,确定触发事件的脚本内容是否需要录制,若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容,然后回放已录制的触发事件的脚本内容,以使得触发事件被响应。即本发明实施例当检测到触发事件时,通过真人实时录制触发事件,以制作软件测试脚本以及游戏制作脚本等,而不需要花费大量的时间以及精力去编码触发事件的代码,以制作软件测试脚本以及游戏制作脚本,从而可以降低脚本制作过程中花费的时间以及精力,进而可以提升脚本制作的效率。
本发明实施例提供了一种应用程序运行的装置,适用于上述方法实施例,在此不再赘述。
本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现实施例一至实施例四任一项所示的方法。
本发明实施例提供了一种计算机可读存储介质,与现有技术相比,本发明实施例当检测到触发事件时,确定触发事件的脚本内容是否需要录制,若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容,然后回放已录制的触发事件的脚本内容,以使得触发事件被响应。即本发明实施例当检测到触发事件时,通过真人实时录制触发事件,以制作软件测试脚本以及游戏制作脚本等,而不需要花费大量的时间以及精力去编码触发事件的代码,以制作软件测试脚本以及游戏制作脚本,从而可以降低脚本制作过程中花费的时间以及精力,进而可以提升脚本制作的效率。
本发明实施例提供了一种计算机可读存储介质,适用于上述方法实施例,在此不再赘述。
本发明实施例提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行如实施例一至实施例四任一项所示的应用程序运行的方法对应的操作。
本发明实施例提供了一种计算设备,与现有技术相比,本发明实施例当检测到触发事件时,确定触发事件的脚本内容是否需要录制,若触发事件的脚本内容需要录制,则录制触发事件的脚本内容,并保存已录制的触发事件的脚本内容,然后回放已录制的触发事件的脚本内容,以使得触发事件被响应。即本发明实施例当检测到触发事件时,通过真人实时录制触发事件,以制作软件测试脚本以及游戏制作脚本等,而不需要花费大量的时间以及精力去编码触发事件的代码,以制作软件测试脚本以及游戏制作脚本,从而可以降低脚本制作过程中花费的时间以及精力,进而可以提升脚本制作的效率。
本发明实施例提供了一种计算设备,适用于上述方法实施例,在此不再赘述。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically ErasableProgrammable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种应用程序运行的方法,其特征在于,包括:
当检测到触发事件时,确定所述触发事件的脚本内容是否需要录制;
若所述触发事件的脚本内容需要录制,则录制所述触发事件的脚本内容,并保存已录制的触发事件的脚本内容;
回放已录制的触发事件的脚本内容,以使得所述触发事件被响应。
2.根据权利要求1所述的方法,其特征在于,录制所述触发事件的脚本内容,并保存已录制的触发事件的脚本内容的步骤,包括:
通过沙箱引擎的钩子函数拦截需录制的触发事件的脚本内容,并录制所述触发事件的脚本内容;
将已录制的触发事件的脚本内容进行二进制数据格式转换,并在预设数据文件中保存数据格式转换后的触发事件的脚本内容。
3.根据权利要求1或2所述的方法,其特征在于,回放已录制的触发事件的脚本内容,以使得所述触发事件被响应,包括:
通过沙箱引擎回放已录制的触发事件的脚本内容,以使得所述触发事件的脚本内容被响应。
4.根据权利要求1-3任一项所述的方法,其特征在于,回放已录制的触发事件的脚本内容,以使得所述触发事件被响应的步骤,包括:
从预设数据文件读取存储的已录制的触发事件的脚本内容;
将所述已录制的触发事件的脚本内容进行数据格式转换;
基于格式转换后的触发事件的脚本内容,构建触发事件的对象;
将构建的触发事件的对象,分发至对应的目标应用,以使得所述目标应用基于所述触发事件的对象,响应所述触发事件。
5.根据权利要求1-4任一项所述的方法,其特征在于,若所述触发事件的脚本内容不需要录制,所述方法还包括:
将所述触发事件的脚本内容分发至对应的目标应用,以使得目标应用响应该触发事件。
6.根据权利要求1-5任一项所述的方法,其特征在于,确定所述触发事件的脚本内容是否需要录制的方式,包括:
基于预设的触发事件的录制规则,确定所述触发事件的脚本内容是否需要录制,所述触发事件的录制规则包括:需进行录制的触发事件的标识信息。
7.一种应用程序运行的装置,其特征在于,包括:
确定模块,用于当检测到触发事件时,确定所述触发事件的脚本内容是否需要录制;
录制模块,用于当所述确定模块确定所述触发事件的脚本内容需要录制时,录制所述触发事件的脚本内容;
保存模块,用于保存所述录制模块录制的触发事件的脚本内容;
回放模块,用于回放已录制的触发事件的脚本内容,以使得所述触发事件被响应。
8.根据权利要求7所述的装置,其特征在于,
所述录制模块,具体用于通过沙箱引擎的钩子函数拦截需录制的触发事件的脚本内容,并录制所述触发事件的脚本内容;
所述保存模块,具体用于将已录制的触发事件的脚本内容进行二进制数据格式转换,并在预设数据文件中保存数据格式转换后的触发事件的脚本内容。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1-6任一项所述的方法。
10.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的应用程序运行的方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408022.1A CN108170593A (zh) | 2017-12-22 | 2017-12-22 | 应用程序运行的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711408022.1A CN108170593A (zh) | 2017-12-22 | 2017-12-22 | 应用程序运行的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108170593A true CN108170593A (zh) | 2018-06-15 |
Family
ID=62523695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711408022.1A Pending CN108170593A (zh) | 2017-12-22 | 2017-12-22 | 应用程序运行的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170593A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795311A (zh) * | 2019-10-30 | 2020-02-14 | 北京三快在线科技有限公司 | 一种事件回放的方法及装置 |
CN112650474A (zh) * | 2020-12-18 | 2021-04-13 | 咪咕互动娱乐有限公司 | 控制脚本生成方法、装置、网络设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461894A (zh) * | 2014-12-17 | 2015-03-25 | 用友软件股份有限公司 | 安卓软件的操作录制装置和方法 |
CN105512044A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 用于关键字驱动测试的对象库的更新方法及系统 |
CN105550046A (zh) * | 2015-12-11 | 2016-05-04 | 北京奇虎科技有限公司 | 虚拟操控的方法、装置及系统 |
CN105824755A (zh) * | 2016-03-17 | 2016-08-03 | 厦门美图移动科技有限公司 | 一种自动化测试方法、装置及移动终端 |
CN105824742A (zh) * | 2015-01-08 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 用户界面操作录制方法及装置 |
CN106874206A (zh) * | 2017-02-27 | 2017-06-20 | 网易(杭州)网络有限公司 | 用于跨平台自动测试的方法、装置及电子设备 |
US20170337122A1 (en) * | 2016-05-18 | 2017-11-23 | Dynatrace Llc | Synthetic test recorder installed inline with a web portal |
-
2017
- 2017-12-22 CN CN201711408022.1A patent/CN108170593A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461894A (zh) * | 2014-12-17 | 2015-03-25 | 用友软件股份有限公司 | 安卓软件的操作录制装置和方法 |
CN105824742A (zh) * | 2015-01-08 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 用户界面操作录制方法及装置 |
CN105550046A (zh) * | 2015-12-11 | 2016-05-04 | 北京奇虎科技有限公司 | 虚拟操控的方法、装置及系统 |
CN105512044A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 用于关键字驱动测试的对象库的更新方法及系统 |
CN105824755A (zh) * | 2016-03-17 | 2016-08-03 | 厦门美图移动科技有限公司 | 一种自动化测试方法、装置及移动终端 |
US20170337122A1 (en) * | 2016-05-18 | 2017-11-23 | Dynatrace Llc | Synthetic test recorder installed inline with a web portal |
CN106874206A (zh) * | 2017-02-27 | 2017-06-20 | 网易(杭州)网络有限公司 | 用于跨平台自动测试的方法、装置及电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795311A (zh) * | 2019-10-30 | 2020-02-14 | 北京三快在线科技有限公司 | 一种事件回放的方法及装置 |
CN110795311B (zh) * | 2019-10-30 | 2020-11-03 | 北京三快在线科技有限公司 | 一种事件回放的方法及装置 |
CN112650474A (zh) * | 2020-12-18 | 2021-04-13 | 咪咕互动娱乐有限公司 | 控制脚本生成方法、装置、网络设备及存储介质 |
CN112650474B (zh) * | 2020-12-18 | 2024-03-22 | 咪咕互动娱乐有限公司 | 控制脚本生成方法、装置、网络设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697066B (zh) | 实现数据表拼接及自动训练机器学习模型的方法和系统 | |
EP2504748B1 (en) | System and method for object relationship identification in a user interface | |
US9122341B2 (en) | Resolving merged touch contacts | |
CN100511101C (zh) | 可通过使用遥控器选择对象的显示装置及其方法 | |
CN108762837A (zh) | 应用程序预加载方法、装置、存储介质及终端 | |
CN109189519B (zh) | 一种通用的用户桌面行为模拟系统及方法 | |
JP2008546103A (ja) | 第三者ウェブ・プラグイン・コンテンツのためのウェブ使用オーバーレイ | |
JP6653929B1 (ja) | 自動判別処理装置、自動判別処理方法、検査システム、プログラム、および記録媒体 | |
CN108829371B (zh) | 界面控制方法、装置、存储介质及电子设备 | |
CN111078556B (zh) | 应用测试方法及装置 | |
CN112817790B (zh) | 模拟用户行为的方法 | |
CN109213668B (zh) | 操作记录方法、装置及终端 | |
CN113926201A (zh) | 外挂识别的方法及装置、电子设备、存储介质 | |
US10168898B2 (en) | Supporting different event models using a single input source | |
CN108170593A (zh) | 应用程序运行的方法及装置 | |
WO2012154628A2 (en) | Interaction-based interface to a logical client | |
CN111258581A (zh) | 基于云服务的应用开发方法、装置、设备及计算机介质 | |
CN112988304B (zh) | 一种操作方式的记录方法、装置、电子设备和存储介质 | |
CN109933260A (zh) | 识屏方法、装置、终端及存储介质 | |
CN114489461A (zh) | 触控响应方法、装置、设备及存储介质 | |
CN114780330A (zh) | 代码监控方法和装置 | |
CN110569459A (zh) | 一种网页信息的统计方法和装置 | |
CN111459547B (zh) | 一种函数调用链路的展示方法和装置 | |
KR20230062243A (ko) | 로그 기반 업무 프로세스 추출 방법 및 그 장치 | |
Xue et al. | Learning‐Replay Based Automated Robotic Testing for Mobile App |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180615 |