CN113342629A - 操作轨迹还原方法、装置、计算机设备和存储介质 - Google Patents
操作轨迹还原方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113342629A CN113342629A CN202110638750.1A CN202110638750A CN113342629A CN 113342629 A CN113342629 A CN 113342629A CN 202110638750 A CN202110638750 A CN 202110638750A CN 113342629 A CN113342629 A CN 113342629A
- Authority
- CN
- China
- Prior art keywords
- operation behavior
- application
- target
- sub
- log
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种操作轨迹还原方法、装置、计算机设备和存储介质。该方法包括:通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;操作行为日志数组中包括按照行为发生顺序排列的操作行为日志;通过自动化脚本,获取与当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从子应用代码中获取目标操作行为所作用于的目标元素;根据当前操作行为日志中的事件类型,从预设函数库中调用相应的执行函数;基于执行函数,对目标元素模拟执行目标操作行为,以还原生成相应的界面。采用本方法能够提高操作轨迹还原的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种操作轨迹还原方法、装置、计算机设备和存储介质。
背景技术
随着科学技术的飞速发展,大量先进技术不断涌现。小程序即为一种新的技术和产品形态。所谓小程序(Mini program)是一种不需要下载安装即可使用的应用程序。用户可以使用小程序进行相应操作,以获取相应服务。
在一些情况下,需要确定用户使用小程序时的操作行为。比如,用户在操作小程序的过程中出现了问题,需要确定用户使用小程序时的操作行为,以定位用户在哪些操作上出错。又比如,用户如果对过往操作存疑,则也需要确定出用户使用小程序时的操作行为,以供用户确认。
目前,用户使用小程序时的操作行为,都是需要开发人员手动从小程序的文本日志信息中搜索查找的。由于,小程序的文本日志信息包括前端、后台、网关等多种无逻辑的信息,非常的大量、无逻辑且繁杂,因此,手动查找需要的操作行为相关信息任务会非常繁重,导致效率非常低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高效率的操作轨迹还原方法、装置、计算机设备和存储介质。
一种操作轨迹还原方法,所述方法包括:
通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;所述操作行为日志数组中包括按照行为发生顺序排列的操作行为日志;
通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素;所述目标操作行为,是所述当前操作行为日志记录的待模拟的操作行为;所述目标元素,是所述文档对象模型中的、且所述目标操作行为所作用于的元素;
根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;
基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面;其中,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
一种操作轨迹还原装置,所述装置包括:
获取模块,用于通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;所述操作行为日志数组中包括按照行为发生顺序排列的操作行为日志;
调用模块,用于通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素;所述目标操作行为,是所述当前操作行为日志记录的待模拟的操作行为;所述目标元素,是所述文档对象模型中的、且所述目标操作行为所作用于的元素;
所述调用模块还用于根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;
模拟还原模块,用于基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面;其中,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请各实施例中所述的操作轨迹还原方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请各实施例中所述的操作轨迹还原方法的步骤。
上述操作轨迹还原方法、装置、计算机设备和存储介质,通过自动化脚本获取操作行为日志数组,从操作行为日志数组中依次地确定当前操作行为日志,通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码。利用子应用自动化工具包提供的元素获取函数,从子应用代码中获取目标操作行为所作用于的目标元素,并根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;基于所述执行函数,对目标元素模拟执行所述目标操作行为,以还原生成相应的界面。由于操作行为日志数组能被自动化脚本识别,所以,操作行为日志数组中是对子应用的大量繁杂的文本日志信息进行筛选及格式化处理后的、仅与操作行为相关的按序排列的日志信息,大大减少了不必要的数据干扰。在模拟执行每个操作行为时都能够还原生成相应的界面,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。相当于,基于自动化脚本代码、子应用自动化工具包、以及仅与操作行为相关的操作行为日志数组来自动地还原,不需要用户进行繁复、大量的手动查询操作,就可以快速、直观地还原用户在使用时的整个操作轨迹,大大提高了效率。
附图说明
图1为一个实施例中操作轨迹还原方法的应用环境图;
图2为一个实施例中操作轨迹还原方法的流程示意图;
图3为一个实施例中源日志数据的示意图;
图4为一个实施例中操作行为日志数组的示意图;
图5为一个实施例中启动子应用开发者工具的示意图;
图6为一个实施例中模拟的子应用页面的示意图;
图7为一个实施例中操作轨迹还原方法的原理示意图;
图8为一个实施例中操作轨迹还原装置的结构框图;
图9为另一个实施例中操作轨迹还原装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,本申请提供的操作轨迹还原方法,可以应用于如图1所示的应用环境中。其中,终端110和服务器120之间可以通过网络进行通信。终端110中安装有自动化脚本。
终端110可以通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;所述操作行为日志数组中包括按照行为发生顺序排列的操作行为日志。终端110可以通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素;所述目标操作行为,是所述当前操作行为日志记录的待模拟的操作行为;所述目标元素,是所述文档对象模型中的、且所述目标操作行为所作用于的元素。终端110可以根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面;其中,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
可以理解,本申请各实施例中的终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种操作轨迹还原方法,该方法可以由终端执行,也可以通过终端和服务器的交互来实现。现以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志。
其中,自动化脚本,是运行后可以自动执行任务的脚本代码。
操作行为日志数组中包括按照行为发生顺序排列的操作行为日志。操作行为日志,用于记录针对目标子应用的操作行为。可以理解,操作行为日志中包括操作行为的相关信息,通过记录操作行为的相关信息实现对操作行为的记录。操作行为的相关信息,是与操作行为相关的信息。可以理解,操作行为日志数组中每条操作行为日志的格式为自动化脚本可识别的格式。
在一个实施例中,操作行为的相关信息,可以包括操作行为所属的事件类型、操作行为所对应的子应用页面地址、目标元素的标识、输入数据、以及滚动数据等中的至少一种与操作行为相关的信息。可以理解,目标元素的标识,可以是目标元素的名称或者用于唯一表示目标元素的字符等。
目标子应用,是需还原操作轨迹的子应用。子应用,是能够在母应用提供的环境中实现的应用程序。目标子应用的母应用是承载目标子应用的原生应用程序,为目标子应用的实现提供环境。原生应用程序是可直接运行于操作***的应用程序。
需要说明的是,目标子应用可以是任意类型、任意领域的子应用,而不限定于某个特定子应用。比如,目标子应用可以是保险业务相关的子应用,也可以是电子商务相关的子应用,还可以是提供公共政策服务的子应用。
在一个实施例中,服务器可以预先根据针对目标子应用的操作行为日志,生成操作行为日志数组。终端可以运行自动化脚本,通过自动化脚本从服务器中获取操作行为日志数组。
在另一个实施例中,终端也可以在终端本地根据针对目标子应用的操作行为日志,生成操作行为日志数组,进而通过运行自动化脚本,获取终端本地生成的操作行为日志数组。
在一个实施例中,自动化脚本可以使用JavaScript语言或者Python语言进行编写。本申请对自动化脚本的编写语言不作限定。
具体地,终端可以通过自动化脚本从操作行为日志数组中依次地确定当前操作行为日志,并依次地针对每个当前操作行为日志,执行步骤204~208。
比如,操作行为日志数组中包括3条操作行为日志,则可以按顺序先获取第1条操作行为日志作为当前操作行为日志,针对第1条操作行为日志执行执行步骤204~208,以模拟第1条操作行为日志所记录的操作行为,还原生成执行第1条操作行为日志所记录的操作行为时的界面。然后,再按次序选取第2条操作行为日志作为当前操作行为日志,继续针对新的当前操作行为日志执行步骤204~208,以此类推,依次地对操作行为日志数组中各条操作行为日志进行相应处理。
步骤204,通过自动化脚本,获取与当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从子应用代码中获取目标操作行为所作用于的目标元素。
其中,目标操作行为,是当前操作行为日志记录的待模拟的操作行为。目标元素,是文档对象模型中的、且目标操作行为所作用于的元素。与当前操作行为日志对应的子应用代码,是当前操作行为日志记录的操作行为所作用于的子应用页面的代码,即,目标操作行为所作用于的子应用页面的代码。
子应用自动化工具包(miniprogram-automator)提供,可以是一个通过NodeJS操控子应用开发者工具以及真机中的母应用的工具包。预设函数库,是子应用自动化工具包为实现对子应用的自动化操作而预先设置的函数库。可以理解,预设函数库,是一种针对子应用预先设置的通用的函数库,能够支持对任意子应用的自动化操作,而并不限定仅仅支持针对目标子应用的自动化操作。
子应用自动化工具包基于预设函数库可以提供一些操作执行能力,比如,可以提供控制子应用跳转到指定页面、获取子应用页面数据、获取子应用页面元素状态、触发子应用元素绑定事件、往逻辑层(AppService)注入代码片段、调用母应用对象上任意接口等等操作执行能力,从而在函数库中的函数被自动化脚本调用后,可以控制子应用开发者工具以及真机中的母应用针对目标子应用模拟执行相应操作行为。可以理解,它为开发者提供了通过外部脚本操控子应用的能力,工作原理与web端的自动化工具类似,比如与selenium、Puppeteer等自动化工具类似,区别在于控制对象由浏览器换成了子应用。自动化脚本正是基于该子应用自动化工具包所提供的能力,实现了对目标子应用的操作轨迹还原处理。
此外,子应用自动化工具包的预设函数库中还提供元素获取函数,用于实现获取子应用代码对应的文档对象模型中的元素(即DOM元素,其中,DOM是文档对象模型)。可以理解,一般情况下,由于子应用是有限制的,因此无法获取子应用页面对应的文档对象模型中的元素,即无法获取子应用页面的DOM元素。但是,子应用自动化工具包,是母应用官方提供的,其所提供的预设函数库中含有获取子应用页面的DOM元素的函数,即元素获取函数,因此,本申请实施例中,自动化脚本调用子应用自动化工具包提供的元素获取函数,可以从子应用代码中获取目标操作行为所作用于的目标元素。
步骤206,根据当前操作行为日志中的事件类型,从预设函数库中调用相应的执行函数。
事件就是一件事情或者一个操作行为,所以,事件类型就是操作行为的类型。由于操作行为日志用于记录针对目标子应用的操作行为,所以,操作行为日志中包括记录的操作行为所属的事件类型。比如,操作行为日志中记录有点击目标子应用页面中元素A的这一操作行为,那么,该操作行为日志中则包括这一操作行为所属的事件类型——点击事件。
在一个实施例中,事件类型,可以包括子应用的进入事件、页面跳转事件、点击事件、输入事件、页面滚动事件、滑动事件、资源转移事件、弹窗事件、分享事件以及子应用的退出事件等中的至少一种。可以理解,事件类型可以是对目标子应用触发的任意事件类型,对此不做穷举。
可以理解,每个事件类型都具有相应的执行函数。事件类型相应的执行函数,是用于实现该事件类型所对应的操作行为或动作的函数。终端可以通过自动化脚本,根据当前操作行为日志中的事件类型,从子应用自动化工具包的预设函数库中,调用用于实现该事件类型所对应的操作行为或动作的执行函数。
比如,若事件类型为input输入事件,则可以从预设函数库中,调用element.input(value)这一输入函数。
在一个实施例中,针对每个当前操作行为日志,终端可以从当前操作行为日志中的事件类型字段中,提取当前操作行为日志记录的操作行为所属的事件类型,从预设函数库中调用与该事件类型相应的执行函数。
步骤208,基于执行函数,对目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
可以理解,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
具体地,终端可以基于调用的执行函数,以及当前操作行为日志中的操作行为的相关信息,对目标元素模拟执行目标操作行为,以还原生成相应的界面。
比如,对于输入事件,终端可以调用element.input(value)函数,以及当前操作行为日志中记录的输入数据value=“123”,对用于输入数据的目标元素模拟执行输入“123”的输入操作行为。
可以理解,在每个操作行为日志记录的操作行为被模拟执行的过程中,都会有相应的界面表现,自动化脚本依次地针对每个当前操作行为日志执行上述步骤,则可以依次地还原展示相应界面,从而可以完整且连贯表征针对目标子应用的整个操作轨迹。
上述操作轨迹还原方法,通过自动化脚本获取操作行为日志数组,从操作行为日志数组中依次地确定当前操作行为日志,通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码。利用子应用自动化工具包提供的元素获取函数,从子应用代码中获取目标操作行为所作用于的目标元素,并根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;基于所述执行函数,对目标元素模拟执行所述目标操作行为,以还原生成相应的界面。由于操作行为日志数组能被自动化脚本识别,所以,操作行为日志数组中是对子应用的大量繁杂的文本日志信息进行筛选及格式化处理后的、仅与操作行为相关的按序排列的日志信息,大大减少了不必要的数据干扰。在模拟执行每个操作行为时都能够还原生成相应的界面,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。相当于,基于自动化脚本代码、子应用自动化工具包、以及仅与操作行为相关的操作行为日志数组来自动地还原,不需要用户进行繁复、大量的手动查询操作,就可以快速、直观地还原用户在使用时的整个操作轨迹,大大提高了效率。
此外,通过自动化脚本代码调用执行函数来模拟还原界面,能够连续地、完整地还原各个操作行为日志对应的界面,从而能够完整地还原整个操作轨迹而不会存在遗漏。相较于截图拼接成视频(即,利用文本信息还原成静态页面后调用截图软件进行截图,然后截图的一张张图片拼接成视频)的方式,本申请的方案所还原的操作轨迹更加准确、精细,因为,调用截图软件进行截图属于定时采集数据,容易导致在时间间隔内的操作被遗漏掉而未被截图,从而导致整个操作轨迹不够准确。
然后,由于子应用自动化工具包提供元素获取函数,所以,能够从子应用代码中获取目标元素,克服了以往无法直接获取子应用的DOM元素的问题,从而可以直接针对目标元素模拟执行目标操作行为,与发生操作行为的实际情况更为贴近,也避免了浪费多余的截图操作等资源,既准确又便捷地实现了对操作轨迹的还原。
而且,连续地还原各个操作行为日志对应的界面,相当于动态再现用户使用子应用时的整个过程,如同录屏播放,非常直观、准确。在用户对过往操作存疑时,能够向用户提供直观、准确地还原整个操作轨迹的界面作为证据,大大提高了证据所表达的信息量及效果,提高了信服力。
在一个实施例中,步骤206包括:若所述当前操作行为日志中的事件类型为第一事件类型,则从所述预设函数库中调用相应的原生执行函数,并从所述子应用自动化工具包中获取预先模拟生成的目标母应用界面的界面信息;本实施例中,步骤208包括:基于所述原生执行函数对所述目标元素模拟执行所述目标操作行为,并在模拟执行完毕后,根据所述界面信息还原所述目标母应用界面。
可以理解,针对目标子应用进行操作时,有时候并不仅仅局限于目标子应用自身的界面变化,一些情况下还会涉及到母应用产生原生行为,因而,如果想要完整还原目标子应用的整个完整的操作轨迹,也需要还原母应用产生原生行为时的界面,但是,由于子应用对母应用都没有控制能力,所以,传统方法都无法还原所涉及的母应用原生行为的界面,比如,对由文本信息还原的静态页面进行截图的方案,就无法还原对所涉及的母应用原生行为的界面。本申请的方案正是提出了一种改进方案。
其中,第一事件类型,是用于触发产生母应用的原生行为的事件类型。目标母应用界面,是触发产生所述母应用的原生行为时,母应用展示的界面。原生执行函数是执行后触发产生母应用的原生行为的执行函数。
在一个实施例中,第一事件类型可以包括跳转至母应用的事件、请求母应用授权的事件、调用母应用提供地图的事件、以及调用母应用播放视频的事件等中的至少一种。其中,跳转至母应用的事件(即,子应用与母应用之间跳转的事件),可以包括分享信息至母应用的事件、以及通过页面触发跳转至母应用的事件等中的至少一种。比如,从微信小程序上分享内容到微信朋友圈的事件,就属于分享信息至母应用的事件。
具体地,若所述当前操作行为日志中的事件类型为第一事件类型,说明当前操作行为日志所记录的待模拟的操作行为,会触发产生母应用的原生行为,因而,终端可以通过自动化脚本从预设函数库中调用相应的原生执行函数,并从所述子应用自动化工具包中获取预先模拟生成的目标母应用界面的界面信息。
可以理解,由于子应用并不能控制母应用执行操作,所以,无法通过控制母应用具体执行相应原生行为来进行界面还原,但是,可以由于本案使用了子应用自动化工具包,由于该子应用自动化工具包是母应用官方针对子应用提供的,所以,该子应用自动化工具包中具有一个能力,可以重写母应用的一些原生执行函数,因此,终端可以利用子应用自动化工具包中所具备的这个能力,对母应用的一些原生执行函数重写至子应用自动化工具包中,以供界面还原时调用。此外,终端还可以预先将母应用执行各种原生行为时的界面表现预先编写好,存储至子应用自动化工具包中。比如,针对请求母应用授权的事件,可以预先将执行该事件对应的原生授权函数重写至子应用自动化工具包,并预先编写仿真母应用的授权弹窗和弹窗消失界面(即母应用授权时的界面表现)。
可以理解,待自动化脚本基于操作行为日志进行界面还原时,自动地从子应用自动化工具包中调用相应的原生执行函数,基于所述原生执行函数对所述目标元素模拟执行所述目标操作行为,并在模拟执行完毕后,根据界面信息还原目标母应用界面。比如,待自动化脚本调用原生授权函数时,基于原生授权函数对子应用页面中的目标元素模拟执行授权操作行为,接着,先弹出一个仿真的授权弹窗,然后消失掉,最终返回允许或拒绝的结果给子应用自动化工具包中重写的母应用的原生授权函数即可。
在一个实施例中,终端可以通过子应用自动化工具包对母应用的原生执行函数进行拦截(mock),然后将拦截的原生执行函数重写至子应用自动化工具包。比如,子应用自动化工具包可以通过以下预设的拦截代码,来拦截母应用的原生执行函数,miniProgram.mockWxMethod(method:string,fn:Function|string,...args:any[]):Promise<void>。
上述实施例中,利用子应用自动化工具包的能力,将母应用的原生执行函数和相应的母应用界面预先写入至该子应用自动化工具包中,实现了对所涉及的母应用的原生行为的界面还原,相较于传统方法中仅局限于还原子应用本身的界面而言,大大保证了操作轨迹还原的完整性。
在一个实施例中,步骤202包括:若当前操作行为日志中的事件类型为第二事件类型,则从所述预设函数库中调用相应的非原生执行函数。本实施例中,步骤208包括:在基于所述非原生执行函数对所述目标元素模拟执行所述目标操作行为后,根据所述子应用代码还原生成相应的子应用页面。
其中,第二事件类型,是不触发产生母应用的原生行为的事件类型。即,第二事件类型,是指仅在子应用站内产生行为的事件类型。非原生执行函数,是执行后不触发产生母应用的原生行为的执行函数。
具体地,若所述当前操作行为日志中的事件类型为第二事件类型,说明当前操作行为日志所记录的待模拟的操作行为,不会触发产生母应用的原生行为,因而,终端可以通过自动化脚本从预设函数库中调用相应的非原生执行函数,并基于该非原生执行函数对所述目标元素模拟执行所述目标操作行为,然后,根据与当前操作行为日志对应的子应用代码还原生成相应的子应用页面。可以理解,由于不会触发产生母应用的原生行为,所以,执行目标操作行为后就不会产生母应用界面,而是会还原生成相应的子应用页面。
上述实施例中,通过对事件类型进行分析判断,针对性地进行界面还原,大大提高了界面还原的准确性,进而也提高了操作轨迹还原的准确性。此外,也避免误调用执行函数导致的***资源不必要的损耗,因而也节省了***资源。
在一个实施例中,所述操作行为日志数组是通过日志数组生成步骤生成的,所述日志数组生成步骤包括:获取目标子应用的源日志数据;从所述源日志数据中筛选出与操作相关的操作行为日志;将所述操作行为日志按照行为发生顺序排序,并将排序后的操作行为日志进行格式转换,得到用于表征操作轨迹的操作行为日志数组;所述操作行为日志数组中每条操作行为日志的格式为自动化脚本可识别的格式。
可以理解,日志数组生成步骤可以由终端执行,也可以由服务器执行,还可以由终端和服务器交互执行,对此不作限定。本实施例中以服务器执行日志数组生成步骤为例仅进行示意说明。
其中,源日志数据,是目标子应用的、且未经操作行为筛选处理的初始的纯文本日志数据。源日志数据中除了包括与操作行为相关的日志信息以外,还包括与操作行为无关的日志信息。比如,序列号、版本号等与操作行为无关的日志信息。
其中,获取源日志数据包括:从日志***中获取目标子应用的前端日志,得到源日志数据。
可以理解,由于源日志数据中包括很多与操作行为无关的日志信息,而且,源日志数据的格式也是无法被自动化脚本直接识别的,因此并不是适合直接被自动化脚本调用。
因此,服务器可以获取目标子应用的源日志数据,从源日志数据中筛选出与操作相关的操作行为日志,如过滤隐藏的、内容为空的页面信息、过滤界面dom非聚焦的状态,过滤非当前小程序界面,得到当前界面所有元素作为操作行为日志,将操作行为日志按照行为发生顺序排序。服务器可以依次将排序后的每条操作行为日志进行格式转换,得到用于表征操作轨迹的操作行为日志数组。可以理解,操作行为日志数组中每条操作行为日志的格式为自动化脚本可识别的格式。
在一个实施例中,服务器可以使用云函数,从源日志数据中筛选出与操作相关的操作行为日志。每条操作行为日志都有对应的时间,该时间用于表征操作行为日志所记录的操作行为的发生时间。因此,服务器可以使用云函数将操作行为日志按照对应的时间升序进行排序。
在一个实施例中,依次针对每条操作行为日志,服务器可以从该操作行为日志中提取操作行为的相关信息(即与操作行为相关的信息),进而将这些操作行为的相关信息按照预设的能够被自动化脚本识别的格式进行格式化处理,然后,将每条操作行为日志进行格式化处理后的结果组合,生成能被自动化脚本识别的操作行为日志数组。比如,依次针对每条操作行为日志,服务器可以从操作行为日志中提取事件类型、页面地址、上报携带的信息等操作行为的相关信息,将这些信息进行格式化处理,从而生成操作行为日志数组。
为便于理解,现结合图3和图4进行示意说明。图3为收集的源日志数据,从图3可知,源日志数据仅是单纯地按时间存储,里面除了包括操作行为的相关信息以外,还包括很多与操作行为无关的噪声信息,而且这种日志格式,是无法被自动化脚本识别的。图4用于示意操作行为日志数组。从图4可知,该操作行为日志数组中不再有与操作行为无关的、冗余的信息,包括的都是筛选出的与操作行为相关的操作行为日志,这些操作行为日志是从进入子应用开始,依次按照行为发生顺序排序的。而且,每条操作行为日志都是进行特定格式转换处理了,能够被自动化脚本识别。
上述实施例中,对子应用的大量繁杂的源日志数据进行操作行为相关日志的筛选处理,筛选出操作行为日志,并进行格式转换处理,大大减少了不必要的数据干扰,提高了后续操作轨迹还原的效率。此外,进行格式转换处理,使得操作行为日志数组能被自动化脚本识别,从而实现了自动化、可视化地还原操作行为轨迹,大大提高了操作行为定位效率以及准确性。
在一个实施例中,该方法还包括:通过自动化脚本,启动子应用开发者工具。本实施例中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面:在所述子应用开发者工具中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
其中,子应用开发者工具,是对母应用的子应用进行开发和调试的开发者工具。开发者工具(IDE,Integrated Development Environment),是一类辅助开发计算机程序的应用软件。子应用开发工具可以用于提供可视化的操作界面,以帮助开发人员完成对子应用的研发工作。
具体地,终端中安装有子应用开发者工具。终端在运行自动化脚本之后,通过自动化脚本,可以自动地启动子应用开发者工具。在通过自动化脚本从操作行为日志数组中确定当前操作行为日志之后,终端可以通过自动化脚本获取与当前操作行为日志对应的子应用代码。
需要说明的是,启动子应用开发者工具在步骤从所述预设函数库中调用相应函数之前执行即可,这里并不限定子应用开发者工具的具体启动时间。
在一个实施例中,可以预先在子应用开发者工具的安全设置,将子应用开发者工具的服务端口设置为开启。然后,可以通过运行自动化脚本连接子应用开发者工具的自动化操作的服务端口,并在连接自动化操作的服务端口后,自动启动子应用开发者工具。
现结合图5针对启动子应用开发者工具进行示意说明。图5的(a)图即用于示意子应用开发者工具的服务端口的开启设置界面。在开启服务端口后,可以运行自动化脚本“node wesure-automator.js”命令连接自动化操作的服务端口,命令行出现如(b)图所示的代码说明端口连接成功,即自动化操作开启成功。进而,自动化脚本则可以随之自动启动子应用开发者工具。(c)图即为启动子应用开发者工具后展示的子应用界面。
在启动子应用开发者工具之后,终端可以按照自动化脚本代码,自动控制子应用开发者工具,依次地从操作行为日志数组中确定当前操作行为日志,并针对当前操作行为日志执行相应的处理,从而一步一步模拟用户对目标子应用的操作行为。具体地,终端可以从子应用自动化工具包括所提供的预设函数库中,调用与当前操作行为日志中的事件类型相应的执行函数,进而,终端可以在所述子应用开发者工具中,通过调用的执行函数,对子应用代码中的目标元素模拟执行目标操作行为,以还原生成相应的界面。
需要说明的是,若事件类型为第一事件类型,则终端可以在子应用开发者工具中,基于调用的原生执行函数对目标元素模拟执行目标操作行为,并在模拟执行完毕后,根据界面信息还原目标母应用界面。若事件类型为第二事件类型,则终端可以在子应用开发者工具中,基于调用的非原生执行函数对目标元素模拟执行目标操作行为,然后,根据当前操作行为日志对应的子应用代码还原生成相应的子应用页面。
即,终端可以在所述子应用开发者工具中,通过调用的执行函数,模拟生成与当前操作行为日志对应的目标母应用界面或子应用页面。该子应用页面,是对目标子应用模拟执行当前操作行为日志中记录的操作行为时,产生的页面。
图6为一个实施例中模拟的子应用页面的示意图。图6即为在子应用开发者工具中,生成对目标子应用模拟执行发生过的操作行为时产生的子应用页面。可以理解,图6中展示的子应用页面在用户之前进行操作时已经产生过,根据本申请实施例的方法,利用操作行为日志,将其在子应用开发者工具中进行还原展示。
上述实施例中,在子应用开发者工具中,模拟执行每个操作行为时都能够生成相应的界面,依次执行则能够在子应用开发者工具中通过界面还原用户使用子应用时的整个操作轨迹。不需要用户进行繁复、大量的手动查询操作,就可以快速、直观地还原用户在使用时的整个操作轨迹,大大提高了效率。进而在需要定位问题的时候,能基于表征操作轨迹还原界面,快速地定位问题,进而提高问题定位及解决的效率。此外,连续地还原各个操作行为日志对应的界面,相当于动态再现用户使用子应用时的整个过程,如同录屏播放,非常直观、准确。再者,通过子应用开发者工具即可以实现操作轨迹的可视化还原,而不需要额外的设备资源,节省了设备资源成本。
在一个实施例中,该方法还包括:上传所述自动化脚本和所述操作行为日志数组;其中,上传后的所述自动化脚本和所述操作行为日志数组,与目标子应用之间相关联;生成与所述目标子应用对应的图形码。本实施例中,通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志,包括:在安装有所述目标子应用的母应用的终端通过扫描所述图形码,下载所述自动化脚本和所述操作行为日志数组的情况下,在所述终端中,通过运行所述自动化脚本,从所述操作行为日志数组中依次地确定当前操作行为日志。
其中,与目标子应用对应的图形码,用于被扫描后,下载与所述目标子应用相关联的自动化脚本和所述操作行为日志数组。
由于本实施例中涉及两种终端,为了表述清楚,现用第一终端和第二终端进行区分表述。第一终端,是初始安装自动化脚本以及后续生成图形码的终端。第二终端是安装有母应用的终端,即后续扫描图形码的终端。
具体地,初始就安装了自动化脚本的第一终端,可以执行步骤202,即,运行自动化脚本,以通过自动化脚本获取操作行为日志数组。第一终端在通过自动化脚本获取操作行为日志数组后,可以向服务器上传该自动化脚本和操作行为日志数组,以使服务器将上传后的自动化脚本和所述操作行为日志数组,与目标子应用之间相关联。第一终端可以生成与目标子应用对应的图形码。用户可以使用安装有母应用(即目标子应用的母应用)的第二终端扫描该图形码,以下载与目标子应用相关联的自动化脚本和操作行为日志数组。
然后,在该扫描图形码的第二终端中,触发运行该自动化脚本,并通过运行的自动化脚本,从下载的操作行为日志数组中依次地确定当前操作行为日志,并执行根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应函数;基于调用的所述函数,对所述目标子应用模拟执行所述当前操作行为日志所记录的操作行为等后续步骤,从而在扫描图形码的该第二终端中,基于该第二终端安装的母应用生成目标子应用的操作轨迹还原界面。
在一个实施例中,所述基于调用的所述函数,对所述目标子应用模拟执行所述当前操作行为日志所记录的操作行为,包括:在运行于所述终端的所述母应用中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
具体地,在扫描图形码的第二终端通过运行所下载的自动化脚本,从下载的操作行为日志数组中依次地确定当前操作行为日志,针对每个当前操作行为日志,第二终端可以根据当前操作行为日志中的事件类型,从预设函数库中调用与该事件类型相应的执行函数。第二终端可以在其所安装的母应用中,基于执行函数,对目标元素模拟执行目标操作行为,以还原生成相应的界面。
需要说明的是,若事件类型为第一事件类型,则第二终端可以在安装的母应用中,基于调用的原生执行函数对目标元素模拟执行目标操作行为,并在模拟执行完毕后,根据界面信息还原目标母应用界面。若事件类型为第二事件类型,则第二终端可以在安装的母应用中,基于调用的非原生执行函数对目标元素模拟执行目标操作行为,然后,根据当前操作行为日志对应的子应用代码还原生成相应的子应用页面。该子应用页面是对目标子应用模拟执行当前操作行为日志中记录的操作行为时生成的页面。
上述实施例中,通过安装母应用的真机(即第二终端)扫描图形码,即可以在真机上依次还原用户执行每个操作行为时产生的相应界面,从而在真机中可视化地还原用户的整个操作轨迹。不需要用户进行繁复、大量的手动查询操作,就可以快速、直观地还原用户在使用时的整个操作轨迹,大大提高了效率。进而在需要定位问题的时候,能基于还原的操作轨迹,快速地定位问题,进而提高问题定位及解决的效率。此外,连续地还原各个操作行为日志对应的界面,相当于动态再现用户使用子应用时的整个过程,如同录屏播放,非常直观、准确。再者,通过真机扫码即可以便捷地实现整个操作轨迹的可视化还原,避免了必须在特定设备上还原操作轨迹造成的限定,大大提高了灵活性。
图7为一个实施例中操作轨迹还原方法的原理示意图。从图7可知,服务器可以从日志数据源中获取目标子应用的源日志数据,通过云函数severless对源日志数据进行处理,即进行与操作行为相关的筛选及格式化处理,生成操作行为日志数组。第一终端则可以运行自动化脚本,从服务器中获取操作行为日志数组。其中,可以通过以下两种方式中的至少一种来还原目标子应用的操作轨迹。第一种方式:在第一终端的本地还原目标子应用的操作轨迹;第二种方式:也可以在真机(即安装有母应用的第二终端)上还原目标子应用的操作轨迹。可以理解,真机中安装有母应用。
针对第一种方式,即,如果是在第一终端的本地还原目标子应用的操作轨迹的情况下,第一终端可以通过自动化脚本启动子应用开发者工具。然后,通过自动化脚本从操作行为日志数组依次确定当前操作行为日志,针对每个当前操作行为日志,通过自动化脚本从前端项目源代码中获取与当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素。第一终端还可以从子应用自动化工具包所提供的预设函数库中,调用与当前操作行为日志中的事件类型相应的执行函数,进而,基于调用的执行函数,在子应用开发者工具中,对目标元素模拟执行目标操作行为,以还原生成相应的界面。
可以理解,若事件类型为第一事件类型,则第一终端可以在子应用开发者工具中,基于调用的原生执行函数对目标元素模拟执行目标操作行为,并在模拟执行完毕后,根据界面信息还原目标母应用界面。若事件类型为第二事件类型,则第一终端可以在子应用开发者工具中,基于调用的非原生执行函数对目标元素模拟执行目标操作行为,然后,根据当前操作行为日志对应的子应用代码还原生成相应的子应用页面。
针对第二种方式,如果是在真机上还原目标子应用的操作轨迹的情况下,则第一终端可以上传自动化脚本和操作行为日志数组,生成与目标子应用对应的图形码。可以使用真机扫描图形码,以下载自动化脚本和操作行为日志数组。真机可以运行自动化脚本,并通过自动化脚本从操作行为日志数组依次确定当前操作行为日志。针对每个当前操作行为日志,真机可以通过自动化脚本从前端项目源代码中获取与当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素。第一终端还可以从子应用自动化工具包所提供的预设函数库中,调用与当前操作行为日志中的事件类型相应的执行函数,进而,基于调用的执行函数,在真机所运行的母应用中,对目标元素模拟执行目标操作行为,以还原生成相应的界面。
可以理解,若事件类型为第一事件类型,则真机可以在安装的母应用中,基于调用的原生执行函数对目标元素模拟执行目标操作行为,并在模拟执行完毕后,根据界面信息还原目标母应用界面。若事件类型为第二事件类型,则真机可以在安装的母应用中,基于调用的非原生执行函数对目标元素模拟执行目标操作行为,然后,根据当前操作行为日志对应的子应用代码还原生成相应的子应用页面。
在一个实施例中,所述基于调用的所述函数,对所述目标子应用模拟执行所述当前操作行为日志所记录的操作行为,包括:若所述事件类型为子应用内的页面跳转事件,则从所述当前操作行为日志中获取待跳转至的第一子应用页面的页面地址,并基于调用的页面跳转函数,对所述目标元素模拟执行页面跳转操作,以跳转至所述页面地址所指向的所述第一子应用页面。
可以理解,子应用内的页面跳转事件,即在子应用内进行页面跳转的事件,而不涉及跳转至母应用的事件。需要说明的是,子应用内的页面跳转事件即为站内跳转事件,可以包括同一子应用内不同页面跳转事件,还可以包括不同子应用之间的页面跳转事件,对此不做限定。可以理解,子应用内的页面跳转事件属于第二事件类型,即不触发产生母应用的原生行为的事件类型。
具体地,在当前操作行为日志中的事件类型为子应用内的页面跳转事件的情况下,所调用的执行函数则为页面跳转函数。该当前操作行为日志中则还包括待跳转至的第一子应用页面的页面地址,终端可以从当前操作行为日志中获取该页面地址。终端可以基于调用的页面跳转函数,对所述目标元素模拟执行页面跳转操作,以跳转至页面地址所指向的第一子应用页面。
比如,若当前操作行为日志的事件类型为子应用内的enterPage——即页面跳转事件,可以从当前操作行为日志中获取对应于path字段(即页面地址字段)的具体的页面地址,调用子应用自动化工具包提供的预设函数库中的跳转函数miniProgram.reLaunch跳转到该页面地址对应的第一子应用页面。
可以理解,页面跳转事件除了子应用内的页面跳转事件以外,还可以跳转至母应用的页面跳转事件,即用于触发产生母应用的原生行为的事件类型(即第一事件类型)。那么,针对跳转至母应用的页面跳转事件,则可以从所述预设函数库中调用相应的原生执行函数,并从所述子应用自动化工具包中获取预先模拟生成的目标母应用界面的界面信息,基于所述原生执行函数对所述目标元素模拟执行所述目标操作行为,并在模拟执行完毕后,跳转至根据界面信息还原的目标母应用界面。
在一个实施例中,本实施例中,步骤204中从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素,包括:若所述事件类型为点击事件,则从所述当前操作行为日志中,获取第二子应用页面中待点击的目标元素的标识,从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取所述目标元素标识所对应的目标元素。本实施例中,步骤208包括:基于调用的与点击事件相应的点击函数,模拟执行对所述第二子应用页面中的所述目标元素的点击操作。
其中,第二子应用页面,是点击事件所作用于的子应用页面。可以理解,需要作用于子应用页面,以针对子应用页面中的目标元素模拟执行点击操作。
具体地,在当前操作行为日志中的事件类型为点击事件的情况下,所调用的执行函数则为点击函数。该当前操作行为日志中还包括第二子应用页面中待点击的目标元素的标识,终端可以从当前操作行为日志中获取该目标元素的标识,比如,目标元素的名称或者用于唯一目标元素的字符串等。终端可以通过自动化脚本从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从第二子应用页面的子应用代码中获取目标元素标识所对应的目标元素。终端可以基于调用的点击函数,模拟执行对所述第二子应用页面中的目标元素的点击操作。
比如,若事件类型为click——即点击事件,可以从当前操作行为日志中获取对应于element字段(即页面元素字段)的目标元素,调用子应用自动化工具包提供的预设函数库中的点击函数element.tap(),从而触发目标元素的bindtap方法的执行。
在一个实施例中,该方法还包括:若所述事件类型为输入事件,则根据所述当前操作行为日志中记录的输入数据,并基于调用的输入函数,对所述目标元素模拟执行相应的输入操作。
具体地,在当前操作行为日志中的事件类型为输入事件的情况下,所调用的执行函数则为输入函数。该当前操作行为日志中则还包括输入数据,终端可以从当前操作行为日志中获取该输入数据。终端可以基于调用的输入函数,对用于输入数据的所述目标元素模拟执行相应的输入操作,以输入该输入数据。
比如,若事件类型为input——即点击事件,可以从当前操作行为日志中获取对应于value字段(即输入数据对应的键值字段)的输入数据,调用子应用自动化工具包提供的预设函数库中的输入函数element.input(value),用对应于value字段的输入数据去模拟输入。
上述实施例中,函数库中提供了能够实现自动模拟执行操作行为的各种函数,进而,自动化脚本可以基于调用的执行函数自动模拟执行用户过往的任意操作行为,实现了对操作轨迹的可视化还原,提高了还原效率及效果。
应该理解的是,虽然本申请各实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种操作轨迹还原装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:获取模块802、调用模块804和模拟还原模块806,其中:
获取模块802,用于通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;所述操作行为日志数组中包括按照行为发生顺序排列的操作行为日志;
调用模块804,用于通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素;所述目标操作行为,是所述当前操作行为日志记录的待模拟的操作行为;所述目标元素,是所述文档对象模型中的、且所述目标操作行为所作用于的元素;
所述调用模块804还用于根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;
模拟还原模块806,用于基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面;其中,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
在一个实施例中,调用模块804还用于若所述当前操作行为日志中的事件类型为第一事件类型,则从所述预设函数库中调用相应的原生执行函数,并从所述子应用自动化工具包中获取预先模拟生成的目标母应用界面的界面信息;所述第一事件类型,是用于触发产生母应用的原生行为的事件类型;所述目标母应用界面,是触发产生所述母应用的原生行为时,所述母应用展示的界面;所述原生执行函数是执行后触发产生所述母应用的原生行为的执行函数。
模拟还原模块806还用于基于所述原生执行函数对所述目标元素模拟执行所述目标操作行为,并在模拟执行完毕后,根据所述界面信息还原所述目标母应用界面。
在一个实施例中,调用模块804还用于若所述当前操作行为日志中的事件类型为第二事件类型,则从所述预设函数库中调用相应的非原生执行函数;所述第二事件类型,是不触发产生母应用的原生行为的事件类型;所述非原生执行函数,是执行后不触发产生所述母应用的原生行为的执行函数。模拟还原模块806还用于在基于所述非原生执行函数对所述目标元素模拟执行所述目标操作行为后,根据所述子应用代码还原生成相应的子应用页面。
在一个实施例中,获取模块802还用于获取目标子应用的源日志数据;从所述源日志数据中筛选出与操作相关的操作行为日志;将所述操作行为日志按照行为发生顺序排序,并将排序后的操作行为日志进行格式转换,得到用于表征操作轨迹的操作行为日志数组;所述操作行为日志数组中每条操作行为日志的格式为自动化脚本可识别的格式。
在一个实施例中,模拟还原模块806还用于通过所述自动化脚本,启动所述子应用开发者工具;在所述子应用开发者工具中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
如图9所示,在一个实施例中,该装置还包括:
生成模块801,用于上传所述自动化脚本和所述操作行为日志数组;其中,上传后的所述自动化脚本和所述操作行为日志数组,与目标子应用之间相关联;生成与所述目标子应用对应的图形码;所述图形码,用于被扫描后,下载与所述目标子应用相关联的自动化脚本和所述操作行为日志数组。
调用模块804还用于在安装有所述目标子应用的母应用的终端通过扫描所述图形码,下载所述自动化脚本和所述操作行为日志数组的情况下,在所述终端中,通过运行所述自动化脚本,从所述操作行为日志数组中依次地确定当前操作行为日志。
在一个实施例中,模拟还原模块806还用于在运行于所述终端的所述母应用中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
在一个实施例中,模拟还原模块806还用于若所述事件类型为子应用内的页面跳转事件,则从所述当前操作行为日志中获取待跳转至的第一子应用页面的页面地址,并基于调用的页面跳转函数,对所述目标元素模拟执行页面跳转操作,以跳转至所述页面地址所指向的所述第一子应用页面。
在一个实施例中,模拟还原模块806还用于若所述事件类型为点击事件,则从所述当前操作行为日志中,获取第二子应用页面中待点击的目标元素的标识;从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述第二子应用页面的子应用代码中获取所述目标元素标识所对应的目标元素;基于调用的与所述点击事件相应的点击函数,模拟执行对所述第二子应用页面中的所述目标元素的点击操作。
在一个实施例中,模拟还原模块806还用于若所述事件类型为输入事件,则根据所述当前操作行为日志中记录的输入数据,并基于调用的输入函数,对所述目标元素模拟执行相应的输入操作。
上述操作轨迹还原装置,通过自动化脚本获取操作行为日志数组,从操作行为日志数组中依次地确定当前操作行为日志,通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码。利用子应用自动化工具包提供的元素获取函数,从子应用代码中获取目标操作行为所作用于的目标元素,并根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;基于所述执行函数,对目标元素模拟执行所述目标操作行为,以还原生成相应的界面。由于操作行为日志数组能被自动化脚本识别,所以,操作行为日志数组中是对子应用的大量繁杂的文本日志信息进行筛选及格式化处理后的、仅与操作行为相关的按序排列的日志信息,大大减少了不必要的数据干扰。在模拟执行每个操作行为时都能够还原生成相应的界面,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。相当于,基于自动化脚本代码、子应用自动化工具包、以及仅与操作行为相关的操作行为日志数组来自动地还原,不需要用户进行繁复、大量的手动查询操作,就可以快速、直观地还原用户在使用时的整个操作轨迹,大大提高了效率。
关于操作轨迹还原装置的具体限定可以参见上文中对于操作轨迹还原方法的限定,在此不再赘述。上述操作轨迹还原装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种操作轨迹还原方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种操作轨迹还原方法,其特征在于,所述方法包括:
通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;所述操作行为日志数组中包括按照行为发生顺序排列的操作行为日志;
通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素;所述目标操作行为,是所述当前操作行为日志记录的待模拟的操作行为;所述目标元素,是所述文档对象模型中的、且所述目标操作行为所作用于的元素;
根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;
基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面;其中,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数,包括:
若所述当前操作行为日志中的事件类型为第一事件类型,则
从所述预设函数库中调用相应的原生执行函数,并从所述子应用自动化工具包中获取预先模拟生成的目标母应用界面的界面信息;所述第一事件类型,是用于触发产生母应用的原生行为的事件类型;所述目标母应用界面,是触发产生所述母应用的原生行为时,所述母应用展示的界面;所述原生执行函数是执行后触发产生所述母应用的原生行为的执行函数;
所述基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面,包括:
基于所述原生执行函数对所述目标元素模拟执行所述目标操作行为,并在模拟执行完毕后,根据所述界面信息还原所述目标母应用界面。
3.根据权利要求2所述的方法,其特征在于,所述根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数还包括:
若所述当前操作行为日志中的事件类型为第二事件类型,则
从所述预设函数库中调用相应的非原生执行函数;所述第二事件类型,是不触发产生母应用的原生行为的事件类型;所述非原生执行函数,是执行后不触发产生所述母应用的原生行为的执行函数;
所述基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面,包括:
在基于所述非原生执行函数对所述目标元素模拟执行所述目标操作行为后,根据所述子应用代码还原生成相应的子应用页面。
4.根据权利要求1所述的方法,其特征在于,所述操作行为日志数组是通过日志数组生成步骤生成的,所述日志数组生成步骤包括:
获取所述目标子应用的源日志数据;
从所述源日志数据中筛选出与操作相关的操作行为日志;
将所述操作行为日志按照行为发生顺序排序,并将排序后的操作行为日志进行格式转换,得到用于表征操作轨迹的操作行为日志数组;所述操作行为日志数组中每条操作行为日志的格式为自动化脚本可识别的格式。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述自动化脚本,启动子应用开发者工具;
所述基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面,包括:
在所述子应用开发者工具中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
上传所述自动化脚本和所述操作行为日志数组;其中,上传后的所述自动化脚本和所述操作行为日志数组,与目标子应用之间相关联;
生成与所述目标子应用对应的图形码;所述图形码,用于被扫描后,下载与所述目标子应用相关联的自动化脚本和所述操作行为日志数组;
所述通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志,包括:
在安装有所述目标子应用的母应用的终端通过扫描所述图形码,下载所述自动化脚本和所述操作行为日志数组的情况下,在所述终端中,通过运行所述自动化脚本,从所述操作行为日志数组中依次地确定当前操作行为日志。
7.根据权利要求6所述的方法,其特征在于,所述基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面,包括:
在运行于所述终端的所述母应用中,基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面,包括:
若所述事件类型为子应用内的页面跳转事件,则
从所述当前操作行为日志中获取待跳转至的第一子应用页面的页面地址,并基于调用的页面跳转函数,对所述目标元素模拟执行页面跳转操作,以跳转至所述页面地址所指向的所述第一子应用页面。
9.根据权利要求1至7中任一项所述的方法,其特征在于,所述从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素,包括:
若所述事件类型为点击事件,则从所述当前操作行为日志中,获取第二子应用页面中待点击的目标元素的标识;
从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述第二子应用页面的子应用代码中获取所述目标元素标识所对应的目标元素;
所述基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面,包括:
基于调用的与所述点击事件相应的点击函数,模拟执行对所述第二子应用页面中的所述目标元素的点击操作。
10.一种操作轨迹还原装置,其特征在于,所述装置包括:
获取模块,用于通过自动化脚本,从目标子应用对应的操作行为日志数组中依次地确定当前操作行为日志;所述操作行为日志数组中包括按照行为发生顺序排列的操作行为日志;
调用模块,用于通过所述自动化脚本,获取与所述当前操作行为日志对应的子应用代码,并从子应用自动化工具包提供的预设函数库中调用元素获取函数,以从所述子应用代码中获取目标操作行为所作用于的目标元素;所述目标操作行为,是所述当前操作行为日志记录的待模拟的操作行为;所述目标元素,是所述文档对象模型中的、且所述目标操作行为所作用于的元素;
所述调用模块还用于根据所述当前操作行为日志中的事件类型,从所述预设函数库中调用相应的执行函数;
模拟还原模块,用于基于所述执行函数,对所述目标元素模拟执行所述目标操作行为,以还原生成相应的界面;其中,依次针对各个操作行为日志还原生成的连续的界面,用于表征针对所述目标子应用的操作轨迹。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述的方法的步骤。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110638750.1A CN113342629B (zh) | 2021-06-08 | 2021-06-08 | 操作轨迹还原方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110638750.1A CN113342629B (zh) | 2021-06-08 | 2021-06-08 | 操作轨迹还原方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342629A true CN113342629A (zh) | 2021-09-03 |
CN113342629B CN113342629B (zh) | 2023-03-07 |
Family
ID=77475459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110638750.1A Active CN113342629B (zh) | 2021-06-08 | 2021-06-08 | 操作轨迹还原方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342629B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020191A (zh) * | 2021-11-09 | 2022-02-08 | 中国工商银行股份有限公司 | 业务页面的操作视频生成方法、装置、计算机设备和介质 |
CN115982507A (zh) * | 2023-03-17 | 2023-04-18 | 一临云(深圳)科技有限公司 | 应用程序触发操作的记录方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107800591A (zh) * | 2017-11-07 | 2018-03-13 | 南威软件股份有限公司 | 一种统一日志数据的分析方法 |
CN108287786A (zh) * | 2017-01-09 | 2018-07-17 | 北京四维图新科技股份有限公司 | 一种基于地图的自动化测试方法和装置、及混合导航*** |
CN109062780A (zh) * | 2018-06-25 | 2018-12-21 | 深圳市远行科技股份有限公司 | 自动化测试用例的开发方法及终端设备 |
CN110489698A (zh) * | 2019-08-16 | 2019-11-22 | 南京云帐房网络科技有限公司 | 一种自动化采集网页数据的***及方法 |
US10853218B1 (en) * | 2018-12-17 | 2020-12-01 | Shutterstock, Inc. | Recording and playback of a web browser session |
CN112148571A (zh) * | 2020-07-08 | 2020-12-29 | 青岛窗外科技有限公司 | 一种网页操作过程记录与回放的方法及装置 |
CN112559306A (zh) * | 2020-11-17 | 2021-03-26 | 贝壳技术有限公司 | 用户行为轨迹获取方法、装置与电子设备 |
CN112613067A (zh) * | 2020-12-16 | 2021-04-06 | 平安普惠企业管理有限公司 | 用户行为数据采集方法、装置、计算机设备及存储介质 |
CN112905936A (zh) * | 2021-02-10 | 2021-06-04 | 微民保险代理有限公司 | 页面录制动画生成、页面操作日志查询方法和计算机设备 |
-
2021
- 2021-06-08 CN CN202110638750.1A patent/CN113342629B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287786A (zh) * | 2017-01-09 | 2018-07-17 | 北京四维图新科技股份有限公司 | 一种基于地图的自动化测试方法和装置、及混合导航*** |
CN107800591A (zh) * | 2017-11-07 | 2018-03-13 | 南威软件股份有限公司 | 一种统一日志数据的分析方法 |
CN109062780A (zh) * | 2018-06-25 | 2018-12-21 | 深圳市远行科技股份有限公司 | 自动化测试用例的开发方法及终端设备 |
US10853218B1 (en) * | 2018-12-17 | 2020-12-01 | Shutterstock, Inc. | Recording and playback of a web browser session |
CN110489698A (zh) * | 2019-08-16 | 2019-11-22 | 南京云帐房网络科技有限公司 | 一种自动化采集网页数据的***及方法 |
CN112148571A (zh) * | 2020-07-08 | 2020-12-29 | 青岛窗外科技有限公司 | 一种网页操作过程记录与回放的方法及装置 |
CN112559306A (zh) * | 2020-11-17 | 2021-03-26 | 贝壳技术有限公司 | 用户行为轨迹获取方法、装置与电子设备 |
CN112613067A (zh) * | 2020-12-16 | 2021-04-06 | 平安普惠企业管理有限公司 | 用户行为数据采集方法、装置、计算机设备及存储介质 |
CN112905936A (zh) * | 2021-02-10 | 2021-06-04 | 微民保险代理有限公司 | 页面录制动画生成、页面操作日志查询方法和计算机设备 |
Non-Patent Citations (1)
Title |
---|
张卫丰等: "基于动态行为分析的网页木马检测方法", 《软件学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020191A (zh) * | 2021-11-09 | 2022-02-08 | 中国工商银行股份有限公司 | 业务页面的操作视频生成方法、装置、计算机设备和介质 |
CN115982507A (zh) * | 2023-03-17 | 2023-04-18 | 一临云(深圳)科技有限公司 | 应用程序触发操作的记录方法、装置、设备及存储介质 |
CN115982507B (zh) * | 2023-03-17 | 2023-06-16 | 一临云(深圳)科技有限公司 | 应用程序触发操作的记录方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113342629B (zh) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9098636B2 (en) | White-box testing systems and/or methods in web applications | |
Amalfitano et al. | Testing android mobile applications: Challenges, strategies, and approaches | |
CN110032519B (zh) | 云函数调试方法、装置、计算机设备及存储介质 | |
CN113342629B (zh) | 操作轨迹还原方法、装置、计算机设备和存储介质 | |
Almeida et al. | Testing tools for Android context-aware applications: a systematic mapping | |
WO2013188540A1 (en) | Practical natural-language human-machine interfaces | |
Du et al. | TraceGen: User activity emulation for digital forensic test image generation | |
CN111796799A (zh) | 子应用开发方法、装置、计算机设备及存储介质 | |
CN112199284A (zh) | 程序自动化测试方法及其相应的装置、设备、介质 | |
CN114297056A (zh) | 一种自动化测试方法及*** | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
CN116166525A (zh) | 一种测试脚本的生成方法及装置 | |
Arlt et al. | Trends in model-based gui testing | |
CN110232018A (zh) | 接口测试方法、装置、计算机设备 | |
US10430309B2 (en) | Duplicating a task sequence from a graphical user interface interaction for a development application in view of trace data | |
CN107193734B (zh) | 用于移动Web应用的重放方法及重放*** | |
Sams | Selenium Essentials | |
CN113986768A (zh) | 应用程序稳定性测试方法、装置、设备及介质 | |
US10545858B2 (en) | Method for testing a graphical interface and corresponding test system | |
CN114968627A (zh) | 一种***异常检测方法、装置及电子设备 | |
CN112162743A (zh) | 驱动程序生成方法、装置、计算机设备和存储介质 | |
CN114968687B (zh) | 遍历测试方法、装置、电子设备、程序产品以及存储介质 | |
Méndez-Porras et al. | A distributed bug analyzer based on user-interaction features for mobile apps | |
Subramanian et al. | Class coverage GUI testing for Android applications | |
CN115982018B (zh) | 一种基于ocr的ui测试方法、***、计算机设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |