CN105808257B - 一种应用弹窗识别方法和装置 - Google Patents
一种应用弹窗识别方法和装置 Download PDFInfo
- Publication number
- CN105808257B CN105808257B CN201610130846.6A CN201610130846A CN105808257B CN 105808257 B CN105808257 B CN 105808257B CN 201610130846 A CN201610130846 A CN 201610130846A CN 105808257 B CN105808257 B CN 105808257B
- Authority
- CN
- China
- Prior art keywords
- information
- control element
- application
- popup
- window
- 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
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000012360 testing method Methods 0.000 claims abstract description 146
- 238000012545 processing Methods 0.000 claims abstract description 53
- 238000001514 detection method Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 41
- 238000010586 diagram Methods 0.000 description 27
- 230000000694 effects Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000003993 interaction Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的实施方式提供了一种应用弹窗识别方法。该应用弹窗识别方法包括:获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。通过获取当前置顶应用的应用信息和当前焦点窗口的窗口信息中包含的包名信息确定被测设备当前是否有应用弹窗弹出,为及时处理测试过程中的弹窗提供了基础,避免了由于非预期应用弹窗弹出对测试进程和测试结果造成的影响,为用户带来了更好的体验。此外,本发明的实施方式提供了一种应用弹窗识别装置。
Description
技术领域
本发明的实施方式涉及应用测试技术领域,更具体地,本发明的实施方式涉及一种应用弹窗识别方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着移动通信技术的飞速发展和移动互联网时代的到来,手机等移动终端作为人们必备的移动通信工具,已从简单的通话工具向智能化发展。为了满足用户日益增长和多种多样的业务需求,基于移动终端的互联网应用越来越多。基于移动终端的互联网应用在被提供给用户使用之前,互联网应用的提供商需要对该应用提供的功能进行测试。
而在基于Andriod(安卓)操作系统开发的互联网应用测试过程中,尤其是自动化测试过程中,由于测试框架的不足或者测试方法不当,不可避免的会出现一些应用弹窗。图1a-1d为一些弹窗示例。如图1a所示,其为被测试应用内部的升级提示框,如图1b所示,其为被测试应用内部长按呼出右键菜单弹窗;图1c为被测试应用内部声明使用系统权限弹窗;图1d为跨应用(即除被测试应用之外的其它应用)弹出的系统权限提醒弹窗。
发明内容
但是,出于在应用测试过程中出现的弹窗可能是被测试应用需要被测试的功能之一,也有可能是不需要被测试的功能的原因,现有技术中在测试应用过程中无法避免弹窗弹出。
而由于测试执行过程中,当有弹窗弹出时,会获取当前屏幕的操作焦点,如果弹出的弹窗不是被测试应用需要被测试的功能之一,如果不及时对弹窗进行处理,则将导致测试无法被正常执行,从而对测试结果造成影响,这是非常令人烦恼的过程。
为此,非常需要一种应用弹窗识别方法,以使弹窗能够及时处理,避免由于测试之外的弹窗弹出影响测试进程和测试结果。
在本上下文中,本发明的实施方式期望提供一种应用弹窗识别方法和装置。
在本发明实施方式的第一方面中,提供了一种应用弹窗识别方法,包括:
获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;
如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。
可选的,本发明实施方式提供的应用弹窗识别方法,还包括:
如果所述第一包名信息和所述第二包名信息相同,则获取所述被测设备当前运行所有窗口的第二窗口信息;
根据获取的第二窗口信息中包含的第三包名信息,统计与所述第一包名信息相同的第三包名信息的数量N,所述N为自然数;
如果N大于等于2,则确定检测到应用弹窗。
进一步的,本发明实施方式提供的应用弹窗识别方法中,确定检测到应用弹窗之后,还包括:
判断检测到的应用弹窗的窗口信息与针对当前测试场景预先定义的任一窗口信息是否相同;
如果不同,则向所述被测设备下发弹窗处理指令。
可选的,本发明实施方式提供的应用弹窗识别方法,向所述被测设备下发弹窗处理指令之前,还包括:
获取检测到的应用弹窗中包含的所有控件元素的控件元素信息;
针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;以及
向所述被测设备下发弹窗处理指令,具体包括:
向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要点击的控件元素的位置信息。
其中,针对每一控件元素,按照以下方法判断该控件元素是否为需要点击的控件元素:
读取该控件元素对应的控件元素信息中的控件元素类型信息;
判断读取的控件元素类型信息是否为按钮BUTTON;
如果是,则确定该控件元素是需要点击的控件元素;
如果否,则确定该控件元素不是需要点击的控件元素。
可选的,本发明实施方式提供的应用弹窗识别方法,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息之后,还包括:
针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为可勾选的控件元素,则读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息;
如果读取的控件元素勾选信息为假FALSE,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;以及
向所述被测设备下发弹窗处理指令,具体包括:
向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要勾选的控件元素的位置信息。
其中,针对每一控件元素,按照以下方法判断该控件元素是否为可勾选的控件元素:
读取该控件元素对应的控件元素信息中的控件元素类型信息;
判断读取的控件元素类型信息是否为复选框CHECKBOX;
如果是,则确定该控件元素是可勾选的控件元素;
如果否,则确定该控件元素不是可勾选的控件元素。
较佳的,本发明实施方式提供的应用弹窗识别方法中,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息,具体包括:
向所述被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令;
接收所述被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件;
解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
较佳的,本发明实施方式提供的应用弹窗识别方法中,获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,具体包括:
分别向所述被测设备发送获取被测设备当前置顶应用的应用信息的第二信息获取指令和获取被测设备当前焦点窗口的第一窗口信息的第三信息获取指令;以及
接收所述被测设备分别针对第二信息获取指令返回的、被测设备当前置顶应用的应用信息和针对第三信息获取指令返回的、被测设备当前焦点窗口的第一窗口信息。
较佳的,本发明实施方式提供的应用弹窗识别方法中,获取所述被测设备当前运行所有窗口的第二窗口信息,具体包括:
向所述被测设备发送获取被测设备当前运行所有窗口的第二窗口信息的第四信息获取指令;
接收所述被测设备针对所述第四信息获取指令返回的第二窗口信息。
较佳的,所述被测试应用为基于安卓Andriod操作系统开发的,以及所述第一信息获取指令、第二信息获取指令、第三信息获取指令或者第四信息获取指令为安卓调试桥ADB指令。
其中,所述ADB指令由独立于所述被测设备的第二设备发送,所述应用弹窗识别方法由所述第二设备执行。
在本发明实施方式的第二方面中,提供了一种应用弹窗识别装置,包括:
第一获取单元,用于获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;
弹窗检测单元,用于如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。
可选的,本发明实施方式提供的应用弹窗识别装置还包括统计单元,其中:
所述第一获取单元,还用于如果所述第一包名信息和所述第二包名信息相同,则获取所述被测设备当前运行所有窗口的第二窗口信息;
所述统计单元,用于根据获取的第二窗口信息中包含的第三包名信息,统计与所述第一包名信息相同的第三包名信息的数量N,所述N为自然数;
所述弹窗检测单元,还用于如果N大于等于2,则确定检测到应用弹窗。
可选的,本发明实施方式提供的应用弹窗识别装置还包括判断单元和弹窗处理单元,其中:
所述判断单元,用于在所述弹窗检测单元确定检测到弹窗之后,判断检测到的应用弹窗的窗口信息与针对当前测试场景预先定义的任一窗口信息是否相同;
所述弹窗处理单元,用于如果所述判断单元的判断结果为否,则向所述被测设备下发弹窗处理指令。
可选的,本发明实施方式提供的应用弹窗识别装置还包括第二获取单元和第一读取单元,其中:
所述第二获取单元,用于所述弹窗处理单元向所述被测设备下发弹窗处理指令之前,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息;
所述第一读取单元,用于针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;
所述弹窗处理单元,具体用于向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要点击的控件元素的位置信息。
较佳的,所述第一读取单元,包括:
第一读取子单元,用于针对每一控件元素,读取该控件元素对应的控件元素信息中的控件元素类型信息;
第一判断子单元,用于判断读取的控件元素类型信息是否为按钮BUTTON;
第一确定子单元,用于如果所述第一判断子单元的判断结果为是,则确定该控件元素是需要点击的控件元素;如果所述第一判断子单元的判断结果为否,则确定该控件元素不是需要点击的控件元素。
可选的,本发明实施方式提供的应用弹窗识别装置还包括第二读取单元和第三读取单元,其中:
所述第二读取单元,用于针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为可勾选的控件元素,则读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息;
所述第三读取单元,用于如果读取的控件元素勾选信息为假FALSE,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;
所述弹窗处理单元,用于向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要勾选的控件元素的位置信息。
较佳的,所述第二读取单元,包括:
第二读取子单元,用于读取该控件元素对应的控件元素信息中的控件元素类型信息;
第二判断子单元,用于判断读取的控件元素类型信息是否为复选框CHECKBOX;
第二确定子单元,用于如果所述第二判断子单元的判断结果为是,则确定该控件元素是可勾选的控件元素;如果所述第二判断子单元的判断结果为否,则确定该控件元素不是可勾选的控件元素。
较佳的,所述第二获取单元包括:
第一发送子单元,用于向所述被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令;
第一接收子单元,用于接收所述被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件;
解析子单元,用于解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
较佳的,所述第一获取单元,包括:
第二发送子单元,用于分别向所述被测设备发送获取被测设备当前置顶应用的应用信息的第一信息获取指令和获取被测设备当前焦点窗口的第一窗口信息的第三信息获取指令;
第二接收子单元,用于接收所述被测设备分别针对第一信息获取指令返回的、被测设备当前置顶应用的应用信息和针对第三信息获取指令返回的、被测设备当前焦点窗口的第一窗口信息。
较佳的,所述第一获取单元,包括:
第三发送子单元,用于向所述被测设备发送获取被测设备当前运行所有窗口的第二窗口信息的第四信息获取指令;
第三接收子单元,用于接收所述被测设备针对所述第四信息获取指令返回的第二窗口信息。
在本发明实施方式的第三方面中,提供了一种应用弹窗识别装置,例如,可以包括存储器和处理器,其中,处理器可以用于读取存储器中的程序,执行下列过程:获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。
在本发明实施方式的第四方面中,提供了一种程序产品,其包括程序代码,当所述程序代码被执行时,所述程序代码用于执行以下过程:获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。
根据本发明实施方式的应用弹窗识别方法和装置,通过获取当前置顶应用的应用信息和当前焦点窗口的窗口信息中包含的包名信息确定被测设备当前是否有应用弹窗弹出,为及时处理测试过程中的弹窗提供了基础,避免了由于非预期应用弹窗弹出对测试进程和测试结果造成的影响,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1a为现有技术中被测试应用内部的升级提示框示意图;
图1b为现有技术中被测试应用内部长按呼出右键菜单弹窗示意图;
图1c为现有技术中被测试应用内部声明使用系统权限弹窗示意图;
图1d为现有技术中跨应用弹出的系统权限提醒弹窗示意图;
图2示意性地示出了根据本发明实施方式的应用场景示意图;
图3示意性地示出了根据本发明实施方式的应用弹窗识别方法的实施流程示意图;
图4示意性地示出了根据本发明实施方式的获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息的流程示意图;
图5a示意性地示出了根据本发明实施方式的有跨应用弹窗出现时被测设备的屏幕显示示意图;
图5b示意性地示出了根据本发明实施方式的当被测设备上有跨应用弹窗出现时,上位机与被测设备之间交互的信息示意图;
图6a示意性地示出了根据本发明实施方式的对被测设备当前出现的跨应用弹窗进行处理流程示意图;
图6b示意性地示出了根据本发明实施方式的获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的流程示意图;
图6c示意性地示出了根据本发明实施方式的上位机获取到的xml文件的第一种示意图;
图6d示意性地示出了根据本发明实施方式的上位机获取到的xml文件的第二种示意图;
图6e示意性地示出了根据本发明实施方式的判断该控件元素是否为需要点击的控件元素的流程示意图;
图6f示意性地示出了根据本发明实施方式的对可勾选的控件元素进行处理的流程示意图;
图6g示意性地示出了根据本发明实施方式的判断各控件元素是否为可勾选的控件元素的流程示意图;
图6h示意性地示出了根据本发明实施方式的上位机获取到的xml文件的第三种示意图;
图6i示意性地示出了根据本发明实施方式的上位机获取到的xml文件的第四种示意图;
图7a示意性地示出了根据本发明实施方式的被测设备屏幕显示的应用弹窗示意图;
图7b示意性地示出了根据本发明实施方式的上位机与被测设备之间交互的信息示意图;
图7c示意性地示出了根据本发明实施方式的判断是否检测到被测应用内部弹出的应用弹窗的流程示意图;
图7d示意性地示出了根据本发明实施方式的被测设备当前屏幕显示的所有窗口第一种示意图;
图7e示意性地示出了根据本发明实施方式的被测设备当前屏幕显示的所有窗口第一种示意图;
图7f示意性地示出了图7d所示窗口对应的窗口信息示意图;
图7g示意性地示出了图7e所示窗口对应的窗口信息示意图;
图8a示意性地示出了根据本发明实施方式的对被测设备当前出现的跨应用弹窗进行处理流程示意图;
图8b示意性地示出了根据本发明实施方式的获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的流程示意图;
图8c示意性地示出了根据本发明实施方式的判断该控件元素是否为需要点击的控件元素的流程示意图;
图8d示意性地示出了根据本发明实施方式的对可勾选的控件元素进行处理的流程示意图;
图8e示意性地示出了根据本发明实施方式的判断各控件元素是否为可勾选的控件元素的流程示意图;
图9示意性地示出了根据本发明另一实施例的应用弹窗识别装置的结构示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种应用弹窗识别的方法和装置。
在本文中,需要理解的是,所涉及的术语中:
ADB(Android Debug Bridge,安卓调试桥),是Android sdk(SoftwareDevelopment Kit,软件开发工具包)里的一个工具,用这个工具可以直接操作和管理基于Android(安卓)系统的模拟器或者真实的Android设备;
上位机,是指可以发出操控指令的计算机,一般指PC(个人计算机)/hostcomputer(主机)/master computer(主计算机)等,本发明实施例中指的是可以对连接在上位机上面的被测设备发出指令的PC机。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在应用程序的测试特别是互联网应用的自动化测试过程中,不可避免的会弹出应用弹窗,如果该应用弹窗不是被测试应用的待测试功能之一,其将对测试进程和测试结果造成影响。
有鉴于此,本发明实施例中,在对应用程序的测试过程中,利用上位机向被测设备获取其当前置顶应用的应用信息和当前焦点窗口的窗口信息,根据其中包含的包名信息是否一致来判断是否有应用弹窗弹出,从而为及时处理应用弹窗提供了基础,避免了非预期弹窗弹出对测试进行和测试结果造成影响。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图2,被测设备11与上位机12连接,其中被测设备11用于运行被测试应用程序,上位机12用于运行本发明实施例提供的应用弹窗识别程序,上位机12控制应用弹窗识别程序的启动、操作处理和停止。上位机12通过向被测设备11发出指令,以实时搜集被测设备11返回的数据,通过对返回的数据进行整理和分析确定被测设备11当前是否有应用弹窗出现。其中,被测设备11和上位机12之间可以通过任意的通信方式连接,例如可以通过以下任一方式连接:
连接方式一、两者通过USB(Universal Serial Bus,通用串行总线)连接。
连接方式二、如果两者处于同一局域网内,则两者之间可以通过Wi-Fi(无线保真)方式连接。
为了实现向被测设备11发送指令的目的,上位机12需要配置ADB命令环境,另外,如果被测设备11与上位机12之间通过USB线连接,则上位机12还需要安装被测设备11的USB驱动程序。
具体实施时,在对应用程序进行测试的同时启动应用弹窗识别程序,在测试应用过程中,实时检测是否有应用弹窗出现,当确定检测到应用弹窗时,还可以根据预先设置的测试场景,判断出现的应用弹窗是否为当前被测试应用的待测试功能之一(即判断出现的应用弹窗是否为预期应用弹窗),如果不是,则需要对应用弹窗进行处理,以保证测试能够正常执行。
需要说明的是,本发明实施例中涉及的被测设备11可以为安卓设备,基于此,被测试应用可以为基于安卓Andriod操作系统开发的。
示例性方法
下面结合图2的应用场景,参考图3-图7g来描述根据本发明示例性实施方式的应用弹窗识别方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
如图3所示,其为本发明实施例提供的应用弹窗识别方法的实施流程示意图,可以包括以下步骤:
S31、获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息。
其中,获取的应用信息中包含有当前置顶应用的第一包名信息,获取的第一窗口信息中包含有当前焦点窗口的第二包名信息,所述被测设备用于运行被测试应用。
其中,当前置顶应用通常是指当前布满被测设备整个屏幕容器(即当前应用所占屏幕的空间)的应用。当前焦点窗口是指当前可以和用户交互的窗口,即最顶层的窗口。
上位机获取了当前置顶应用的第一包名信息和当前焦点窗口的第二包名信息之后,比较两者是否相同,并根据比较结果确定是否有应用弹窗弹出。
S32、如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。
其中,步骤S31中可以按照图4所示的流程获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息:
S311、分别向被测设备发送获取被测设备当前置顶应用的应用信息的第二信息获取指令和获取被测设备当前焦点窗口的第一窗口信息的第三信息获取指令。
S312、接收所述被测设备分别针对第二信息获取指令返回的、被测设备当前置顶应用的应用信息和针对第三信息获取指令返回的、被测设备当前焦点窗口的第一窗口信息。
较佳的,具体实施时,上位机可以使用adb shell dumpsys window命令对被测设备上正在运行的应用进行信息抓取。
具体的,上位机向被测设备发出的第二信息获取指令可以为:adb shell dumpsyswindow windows|grep‘mFocusedApp’,被测设备在接收到该指令后,向上位机返回相应数据,上位机通过对被测设备返回的数据进行分析得到当前置顶应用的应用信息并记录。
相应的,被测设备返回的消息可为如下形式:mFocusedApp=AppWindowToken{423d4a10 token=Token{4211c328ActivityRecord{f53e20 u0 com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome t24}}}。
其中,u0后面的部分“com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome”即为被测设备上当前置顶应用的应用信息。这其中,字符斜线“/”之前部分即为被测设备上当前置顶应用的包名信息。本例中,被测设备当前置顶应用的包名信息即为:“com.neteaseyx.paopao”,则上位机记录该包名信息作为被测设备上当前置顶应用对应的第一包名信息。
上位机向被测设备发出的第三信息获取指令可以为:adb shell dumpsys windowwindows|grep‘mCurrentFocus’,被测设备在接收到该指令后,向上位机返回相应数据,上位机通过对被测设备返回的数据进行分析得到当前焦点窗口的窗口信息并记录。
相应的,被测设备返回的消息可为如下:mCurrentFocus=Window{41e51870 u0com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome},同样,u0后面部分“com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome”即为被测设备上当前焦点窗口的窗口信息,而字符斜线“/”之前部分即为被测设备上当前焦点窗口的包名信息,由此,上位机可以确定被测设备上当前焦点窗口的包名信息为“com.neteaseyx.paopao”,上位机记录该包名信息作为被测设备上当前焦点窗口第二包名信息。
上位机比较第一包名信息和第二包名信息,根据比较结果确定是否检测到应用弹窗。具体的,根据比较结果,本发明实施例提供如下两种实施方式:
第一种实施方式、第一包名信息和第二包名信息不同。
如果第一包名信息和第二包名信息不同,则上位机可以直接确定检测到应用弹窗。由于第一包名信息和第二包名信息不同,上位机可以确定被测设备上当前有跨应用的(一般是系统提示框,授权框等)弹窗出现。
以下以上位机向被测设备发送第二信息获取指令后,被测设备返回的消息如下为例:
mFocusedApp=AppWindowToken{423d4a10 token=Token{4211c328ActivityRecord{f53e20 u0 com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome t24}}},同样,u0后面部分“com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome”即为当前置顶应用的应用信息,这样,上位机可以确定被测设备上当前置顶应用的包名信息为“com.neteaseyx.paopao”,上位机记录该包名信息作为第一包名信息。假设上位机向被测设备发送第三信息获取指令后,被测设备返回的消息如下:mCurrentFocus=Window{42837510u0读取本机识别码},类似的,上位机可以确定当前被测设备上当前焦点窗口的包名信息为“读取本机识别码”,上位机记录该包名信息作为第二包名信息。
从上可以看出,被测设备上当前置顶应用的第一包名信息和当前焦点窗口的第二包名信息完全不同,由此,上位机可以判定有跨应用的应用弹窗弹出。如图5a所示,其为有跨应用弹窗出现时被测设备的屏幕显示示意图,如图5b所示,其为当被测设备上有跨应用弹窗出现时,上位机与被测设备之间交互的信息示意图。
在对应用进行测试过程中,如果被测设备出现跨应用弹窗,则会影响到测试进程的执行,甚至会直接影响到最终的测试结果。因此,当上位机检测到被测设备上有跨应用弹窗时,需要对被测设备当前出现的跨应用弹窗进行处理,以避免其对测试进程和测试结果造成影响。
以下结合具体的实施例对上位机在检测到被测设备上出现跨应用弹窗后对应用弹窗进行处理的方法进行说明。
较佳的,上位机在检测到被测设备上出现跨应用弹窗后,可以通过向被测设备下发弹窗处理指令以指示被测设备对出现的跨应用弹窗进行处理,保证测试进行的顺利执行。具体的,上位机可以按照图6a所示的流程对被测设备当前出现的跨应用弹窗进行处理:
S61、获取检测到的应用弹窗中包含的所有控件元素的控件元素信息。
S62、针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息。
S63、向被测设备下发点击操作指令。
其中,向被测设备下发的点击操作指令中包含有需要点击的控件元素的位置信息。
较佳的,步骤S61中,上位机可以按照图6b所示的流程获取检测到的应用弹窗中包含的所有控件元素的控件元素信息:
S611、向被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令。
具体的,上位机向被测设备发送的第一信息获取指令如下:adb shell system/bin/uiautomator dump data/local/tmp/uidump.xml。其中,被测设备当前焦点窗口的所有控件元素都存放在被测设备的data/local/tmp/路径下面的uidump.xml文件中。
S612、接收被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件。
被测设备从data/local/tmp/获取uidump.xml并返回给上位机。
上位机通过发送指令:adb pull data/local/tmp/uidump.xml%localDir%/uidump.xml(其中%localDir%为上位机中的本地路径,例如,E:/work/uidump.xml),由此,在上位机本地路径%localDir%/uidump.xml得到uidump.xml文件。其中,获取到的xml文件分别如图6c和图6d所示。其中的每一个node(节点)对应一个控件元素。
S613、解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
上位机解析xml文件,获取检测到的应用弹窗中包含的控件元素的具体元素信息。
基于对获取的xml文件,在步骤S62中,针对每一控件元素,上位机可以按照图6e所示的流程判断该控件元素是否为需要点击的控件元素:
S621、读取该控件元素对应的控件元素信息中的控件元素类型信息。
S622、判断读取的控件元素类型信息是否为按钮BUTTON,如果是,执行步骤S623,否则,执行步骤S624。
S623、确定该控件元素是需要点击的控件元素,流程结束。
S624、确定该控件元素不是需要点击的控件元素。
以图6c和图6d所示的xml文件为例,针对每一个node节点(每一个node节点对应一个控件元素),读取该node节点对应的控件元素信息中的控件元素类型信息(即图6c和图6d所示的xml文件中的class),如果控件元素类型信息中包含BUTTON(按钮),则可以确定相应的控件元素为需要点击的控件元素。
针对需要点击的控件元素需要由上位机发送相应的点击操作指令以此完成对检测到的应用弹窗进行处理。具体操作如下:上位机根据node节点获取到相应的控件元素的位置信息,如bounds=”[540,1062][966,1206]”,进而确定需要点击的控件元素对应的位置坐标(x,y)=(540,1062)。较佳的,具体实施时,为了除去边界影响,还可以将获取的位置坐标分别偏移n(n为自然数)个像素点,以n=5为例,即上位机确定需要点击的控件元素对应的位置坐标为(x,y)=(545,1067)。基于此,上位机可以向被测设备发送如下点击操作指令:adb shell input tap 545 1067,以点击到相应的位置。
至此,上位机就完成了对检测到的应用弹窗的处理。
具体实施时,在应用弹窗中还可能存在一些可勾选的控件元素,例如,应用弹窗中包含的“不再提醒”等,如果勾选了该选项后,可以避免应用弹窗再次弹出,这样,可以节约上位机与被测设备之间的交互指令。基于此,如图6f所示,本发明实施例中,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息之后,针对每一控件元素,还可以进行如下处理:
S641、针对每一控件元素,判断该控件元素是否为可勾选的控件元素,如果是,则执行步骤S642,否则,流程结束。
S642、读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息。
S643、判断读取的控件元素勾选信息是否为FALSE,如果是,执行步骤S644,否则,流程结束。
S644、向被测设备下发点击操作指令,点击操作指令中包含有需要勾选的控件元素的位置信息。
具体的,在步骤S641中,与上述判断该控件元素是否为需要点击的控件元素类似,针对每一控件元素,可以按照图6g所示的流程判断该控件元素是否为可勾选的控件元素:
S6411、读取该控件元素对应的控件元素信息中的控件元素类型信息。
S6412、判断读取的控件元素类型信息是否为复选框CHECKBOX,如果是,执行步骤S6413,否则,执行步骤S6414。
以上位机获取到的xml文件如图6h和图6i所示的xml文件为例,针对每一个node节点(每一个node节点对应一个控件元素),读取该node节点对应的控件元素信息中的控件元素类型信息(即图6h和图6i中的class),如果控件元素类型信息中包含CHECKBOX(复选框),则可以确定相应的控件元素为可勾选的控件元素。
S6413、确定该控件元素是可勾选的控件元素。
S6414、确定该控件元素不是可勾选的控件元素。
第二种实施方式、第一包名信息和第二包名信息相同。
以上位机向被测设备发送第二信息获取指令,被测设备向上位机返回的消息可为如下:
mFocusedApp=AppWindowToken{423d4a10 token=Token{4211c328ActivityRecord{f53e20 u0 com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome t24}}};以及
上位机向被测设备发送第三信息获取指令,被测设备向上位机返回的消息如下为例:
mCurrentFocus=Window{4284da38 u0 com.neteaseyx.paopao/com.netease.vstore.activity.ActivitySettings}。
根据被测设备针对第二信息获取指令返回的消息中u0后面的部分“com.neteaseyx.paopao/com.netease.vstore.activity.ActivityHome”可以确定被测设备上当前置顶应用的第一包名信息为“com.neteaseyx.paopao”,同样,根据被测设备针对第三信息获取指令返回的消息中u0后面的部分“com.neteaseyx.paopao/com.netease.vstore.activity.ActivitySettings”可以确定被测设备上当前焦点窗口的第二包名信息为“com.neteaseyx.paopao”,由此可见,被测设备上当前置顶应用对应的第一包名信息和被测设备上当前焦点窗口对应的第二包名信息相同。
如果第一包名信息和第二包名信息相同则存在以下两种可能情况:1、被测设备上没有应用弹窗弹出,当前焦点窗口即为当前置顶应用对应的应用窗口;2、被测设备上有被测应用内部的弹窗弹出。如图7a所示,其为被测设备屏幕显示的应用弹窗示意图,如图7b所示,其为上位机与被测设备之间交互的信息示意图。
由此,上位机可以按照图7c所示的流程判断是否检测到被测应用内部弹出的应用弹窗:
S71、获取被测设备当前运行所有窗口的第二窗口信息。
具体实施时,上位机可以向被测设备发送获取被测设备当前运行所有窗口的第二窗口信息的第四信息获取指令;并接收被测设备针对第四信息获取指令返回的第二窗口信息。
具体的,上位机可以向被测设备发送如下的信息获取指令:adb shell dumpsyswindow windows|grep‘Window#’,以查看被测设备的当前窗口的所有信息,上位机拿到返回数据,并对数据进行分析和处理。
以被测设备当前屏幕显示的所有窗口分别如图7d和图7e所示为例,当前置顶应用的包名信息和当前焦点窗口的包名信息相同,其中,图7d中有应用内部弹窗弹出,图7e中无应用内部弹窗弹出。则上位机获得的数据分别如图7f和图7g所示,其中,图7f为图7d所示窗口对应的窗口信息示意图,图7g为图7e所示窗口对应的窗口信息示意图。
S72、根据获取的第二窗口信息中包含的第三包名信息,统计与第一包名信息相同的第三包名信息的数量N。
其中,N为自然数。
S73、判断N是否大于等于2,如果是,执行步骤S74,否则,执行步骤S75。
S74、确定检测到应用弹窗,流程结束。
S75、确定没有检测到应用弹窗。
具体的,根据图7f可知,当有应用内部弹窗时,在统计“Windows#”窗口信息的时,会出现当前应用包名下的两个相同窗口信息的记录,窗口信息如下所示:
而根据图7g可知,当无应用内部弹窗出现时,在统计“Windows#”窗口信息的时,出现的当前应用包名下的窗口信息的记录只有一条,窗口信息如下所示:
mFocusedApp=AppWindowToken{4344c7a0 token=Token{42793468ActivityRecord{41eb64e8 u0com.kaola/.spring.ui.MainActivity t284}}}
mCurrentFocus=Window{42aa6640 u0com.kaola/com.kaola.spring.ui.MainActivity}
Window#2 Window{42aa6640 u0com.kaola/com.kaola.spring.ui.MainActivity}:
由此,上位机可以根据统计结果确定当前是否出现应用内部弹窗。
可选的,在检测到应用内部弹窗之后,上位机还需要进一步判断检测到的应用弹窗的窗口信息与针对当前测试场景预先定义的任一窗口信息是否相同,如果相同,则上位机可以确定当前检测到的应用弹窗为测试过程中的预期应用弹窗,即其为被测试应用的待测试功能之一;如果不同,则上位机需要向被测设备发送弹窗处理指令,以对检测到的应用弹窗进行处理。具体的,上位机对检测到的应用内部弹窗进行处理的流程与上述上位机对检测到的跨应用弹窗进行处理的流程类似,以下集合附图简单介绍之。
如图8a所示,其为上位机对被测设备上出现的应用内部弹窗进行处理的流程示意图,可以包括以下步骤:
S81、获取检测到的应用弹窗中包含的所有控件元素的控件元素信息。
S82、针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息。
S83、向被测设备下发点击操作指令。
其中,向被测设备下发的点击操作指令中包含有需要点击的控件元素的位置信息。
较佳的,步骤S81中,上位机可以按照图8b所示的流程获取检测到的应用弹窗中包含的所有控件元素的控件元素信息:
S811、向被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令。
具体的,上位机向被测设备发送的第一信息获取指令如下:adb shell system/bin/uiautomator dump data/local/tmp/uidump.xml。其中,被测设备当前焦点窗口的所有控件元素都存放在被测设备的data/local/tmp/路径下面的uidump.xml文件中。
S812、接收被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件。
被测设备从data/local/tmp/获取uidump.xml并返回给上位机。
上位机通过发送指令:adb pull data/local/tmp/uidump.xml%localDir%/uidump.xml(其中%localDir%为上位机中的本地路径,例如,E:/work/uidump.xml),由此,在上位机本地路径%localDir%/uidump.xml得到uidump.xml文件。其中,获取到的xml文件分别如图6c和图6d所示。其中的每一个node(节点)对应一个控件元素。
S813、解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
上位机解析xml文件,获取检测到的应用弹窗中包含的控件元素的具体元素信息。
基于对获取的xml文件,在步骤S82中,针对每一控件元素,上位机可以按照图8c所示的流程判断该控件元素是否为需要点击的控件元素:
S821、读取该控件元素对应的控件元素信息中的控件元素类型信息。
S822、判断读取的控件元素类型信息是否为按钮BUTTON,如果是,执行步骤S823,否则,执行步骤S824。
S823、确定该控件元素是需要点击的控件元素,流程结束。
S824、确定该控件元素不是需要点击的控件元素。
以图6c和图6d所示的xml文件为例,针对每一个node节点(每一个node节点对应一个控件元素),读取该node节点对应的控件元素信息中的控件元素类型信息(即图6c和图6d所示的xml文件中的class),如果控件元素类型信息中包含BUTTON(按钮),则可以确定相应的控件元素为需要点击的控件元素。
针对需要点击的控件元素需要由上位机发送相应的点击操作指令以此完成对检测到的应用弹窗进行处理。具体操作如下:上位机根据node节点获取到相应的控件元素的位置信息,如bounds=”[540,1062][966,1206]”,进而确定需要点击的控件元素对应的位置坐标(x,y)=(540,1062)。较佳的,具体实施时,为了除去边界影响,还可以将获取的位置坐标分别偏移n(n为自然数)个像素点,以n=5为例,即上位机确定需要点击的控件元素对应的位置坐标为(x,y)=(545,1067)。基于此,上位机可以向被测设备发送如下点击操作指令:adb shell input tap 545 1067,以点击到相应的位置。
至此,上位机就完成了对检测到的被测应用内部出现的应用弹窗的处理。
具体实施时,在应用弹窗中还可能存在一些可勾选的控件元素,例如,应用弹窗中包含的“不再提醒”和“记住我的选择”等,如果勾选了该选项后,可以避免应用弹窗再次弹出或者在出现了应用弹窗后由应用按照用户上次的选择自动进行处理,这样,可以节约上位机与被测设备之间的交互指令。基于此,如图8d所示,本发明实施例中,上位机在获取检测到的应用弹窗中包含的所有控件元素的控件元素信息之后,针对每一控件元素,还可以进行如下处理:
S841、针对每一控件元素,判断该控件元素是否为可勾选的控件元素,如果是,则执行步骤S842,否则,流程结束。
S842、读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息。
S843、判断读取的控件元素勾选信息是否为FALSE,如果是,执行步骤S844,否则,流程结束。
S844、向被测设备下发点击操作指令,点击操作指令中包含有需要勾选的控件元素的位置信息。
具体的,在步骤S841中,与上述判断该控件元素是否为需要点击的控件元素类似,针对每一控件元素,可以按照图8e所示的流程判断该控件元素是否为可勾选的控件元素:
S8411、读取该控件元素对应的控件元素信息中的控件元素类型信息。
S8412、判断读取的控件元素类型信息是否为复选框CHECKBOX,如果是,执行步骤S8413,否则,执行步骤S8414。
以上位机获取到的xml文件如图6h和图6i所示的xml文件为例,针对每一个node节点(每一个node节点对应一个控件元素),读取该node节点对应的控件元素信息中的控件元素类型信息(即图6h和图6i中的class),如果控件元素类型信息中包含CHECKBOX(复选框),则可以确定相应的控件元素为可勾选的控件元素。
S8413、确定该控件元素是可勾选的控件元素。
S8414、确定该控件元素不是可勾选的控件元素。
本发明实施例提供的应用弹窗识别方法在应用程序的测试特别是互联网应用的自动化测试过程中,可以实时检测应用窗口的弹出情况,由此,根据检测结果可以进一步判断出现的弹窗是否为被测试应用的待测试功能之一,如果检测到的应用弹窗不是被测试应用的待测试功能之一,还可以进一步的对检测到的应用弹窗进行处理,以避免其影响测试进程和测试结果。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图9对本发明示例性实施方式的应用弹窗识别装置进行说明。
如图9所示,其为本发明实施例提供的应用弹窗识别装置的结构示意图,包括:
第一获取单元91,用于获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;
弹窗检测单元92,用于如果所述第一包名信息和所述第二包名信息不同,则确定检测到应用弹窗。
可选的,本发明实施例提供的应用弹窗识别装置还可以包括统计单元93,其中:
所述第一获取单元91,还用于如果所述第一包名信息和所述第二包名信息相同,则获取所述被测设备当前运行所有窗口的第二窗口信息;
所述统计单元93,用于根据获取的第二窗口信息中包含的第三包名信息,统计与所述第一包名信息相同的第三包名信息的数量N,所述N为自然数;
所述弹窗检测单元92,还用于如果N大于等于2,则确定检测到应用弹窗。
可选的,本发明实施例提供的应用弹窗识别装置还可以包括判断单元94和弹窗处理单元95,其中:
所述判断单元94,用于在所述弹窗检测单元92确定检测到弹窗之后,判断检测到的应用弹窗的窗口信息与针对当前测试场景预先定义的任一窗口信息是否相同;
所述弹窗处理单元95,用于如果所述判断单元94的判断结果为否,则向所述被测设备下发弹窗处理指令。
可选的,本发明实施例提供的应用弹窗识别装置还可以包括第二获取单元96和第一读取单元97,其中:
所述第二获取单元96,用于所述弹窗处理单元95向所述被测设备下发弹窗处理指令之前,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息;
所述第一读取单元97,用于针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;
所述弹窗处理单元95,具体用于向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要点击的控件元素的位置信息。
其中,所述第一读取单元97,包括:
第一读取子单元971,用于针对每一控件元素,读取该控件元素对应的控件元素信息中的控件元素类型信息;
第一判断子单元972,用于判断读取的控件元素类型信息是否为按钮BUTTON;
第一确定子单元973,用于如果所述第一判断子单元的判断结果为是,则确定该控件元素是需要点击的控件元素;如果所述第一判断子单元的判断结果为否,则确定该控件元素不是需要点击的控件元素。
可选的,本发明实施例提供的应用弹窗识别装置还可以包括第二读取单元98和第三读取单元99,其中:
所述第二读取单元98,用于针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为可勾选的控件元素,则读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息;
所述第三读取单元99,用于如果读取的控件元素勾选信息为假FALSE,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;
所述弹窗处理单元95,用于向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要勾选的控件元素的位置信息。
其中,所述第二读取单元98,包括:
第二读取子单元981,用于读取该控件元素对应的控件元素信息中的控件元素类型信息;
第二判断子单元982,用于判断读取的控件元素类型信息是否为复选框CHECKBOX;
第二确定子单元983,用于如果所述第二判断子单元的判断结果为是,则确定该控件元素是可勾选的控件元素;如果所述第二判断子单元的判断结果为否,则确定该控件元素不是可勾选的控件元素。
较佳的,第二获取单元96可以包括:
第一发送子单元961,用于向所述被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令;
第一接收子单元962,用于接收所述被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件;
解析子单元963,用于解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
较佳的,第一获取单元91可以包括:
第二发送子单元911,用于分别向所述被测设备发送获取被测设备当前置顶应用的应用信息的第一信息获取指令和获取被测设备当前焦点窗口的第一窗口信息的第三信息获取指令;
第二接收子单元912,用于接收所述被测设备分别针对第一信息获取指令返回的、被测设备当前置顶应用的应用信息和针对第三信息获取指令返回的、被测设备当前焦点窗口的第一窗口信息。
或者,第一获取单元91可以包括:
第三发送子单元913,用于向所述被测设备发送获取被测设备当前运行所有窗口的第二窗口信息的第四信息获取指令;
第三接收子单元914,用于接收所述被测设备针对所述第四信息获取指令返回的第二窗口信息。
在一些可能的实施方式中,根据本发明的消息提示装置可以包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的消息提示方法中的各种步骤。例如,所述处理单元可以执行如图4中所示的步骤S41,电子地图服务器在接收到第一用户发送的电子地图访问请求时,从预先存储的信息推荐表中查找被推荐对象的位置信息和推荐评论信息,步骤S42,电子地图服务器根据被推荐对象的位置信息和推荐评论信息,在电子地图的相应位置标记其对应的推荐评论信息;以及步骤S43,电子地图服务器向第一用户返回标记了推荐评论信息的电子地图。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (22)
1.一种应用弹窗识别方法,包括:
获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;
如果所述第一包名信息和所述第二包名信息不同,则确定检测到跨应用的应用弹窗;
如果所述第一包名信息和所述第二包名信息相同,则获取所述被测设备当前运行所有窗口的第二窗口信息;
根据获取的第二窗口信息中包含的第三包名信息,统计与所述第一包名信息相同的第三包名信息的数量N,所述N为自然数;
如果N大于等于2,则确定检测到所述被测试应用内部弹出的应用弹窗。
2.根据权利要求1所述的方法,确定检测到应用弹窗之后,还包括:
判断检测到的应用弹窗的窗口信息与针对当前测试场景预先定义的任一窗口信息是否相同;
如果不同,则向所述被测设备下发弹窗处理指令。
3.根据权利要求2所述的方法,向所述被测设备下发弹窗处理指令之前,还包括:
获取检测到的应用弹窗中包含的所有控件元素的控件元素信息;
针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;以及
向所述被测设备下发弹窗处理指令,具体包括:
向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要点击的控件元素的位置信息。
4.根据权利要求3所述的方法,针对每一控件元素,按照以下方法判断该控件元素是否为需要点击的控件元素:
读取该控件元素对应的控件元素信息中的控件元素类型信息;
判断读取的控件元素类型信息是否为按钮BUTTON;
如果是,则确定该控件元素是需要点击的控件元素;
如果否,则确定该控件元素不是需要点击的控件元素。
5.根据权利要求3所述的方法,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息之后,还包括:
针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为可勾选的控件元素,则读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息;
如果读取的控件元素勾选信息为假FALSE,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;以及
向所述被测设备下发弹窗处理指令,具体包括:
向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要勾选的控件元素的位置信息。
6.根据权利要求5所述的方法,针对每一控件元素,按照以下方法判断该控件元素是否为可勾选的控件元素:
读取该控件元素对应的控件元素信息中的控件元素类型信息;
判断读取的控件元素类型信息是否为复选框CHECKBOX;
如果是,则确定该控件元素是可勾选的控件元素;
如果否,则确定该控件元素不是可勾选的控件元素。
7.根据权利要求3所述的方法,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息,具体包括:
向所述被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令;
接收所述被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件;
解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
8.根据权利要求7所述的方法,所述被测试应用为基于安卓Andriod操作系统开发的,所述第一信息获取指令为安卓调试桥ADB指令。
9.根据权利要求1所述的方法,获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,具体包括:
分别向所述被测设备发送获取被测设备当前置顶应用的应用信息的第二信息获取指令和获取被测设备当前焦点窗口的第一窗口信息的第三信息获取指令;以及
接收所述被测设备分别针对第二信息获取指令返回的、被测设备当前置顶应用的应用信息和针对第三信息获取指令返回的、被测设备当前焦点窗口的第一窗口信息。
10.根据权利要求9所述的方法,所述被测试应用为基于安卓Andriod操作系统开发的,所述第二信息获取指令或所述第三信息获取指令为安卓调试桥ADB指令。
11.根据权利要求1所述的方法,获取所述被测设备当前运行所有窗口的第二窗口信息,具体包括:
向所述被测设备发送获取被测设备当前运行所有窗口的第二窗口信息的第四信息获取指令;
接收所述被测设备针对所述第四信息获取指令返回的第二窗口信息。
12.根据权利要求11所述的方法,所述被测试应用为基于安卓Andriod操作系统开发的,所述第四信息获取指令为安卓调试桥ADB指令。
13.根据权利要求8、10或12任一项所述的方法,所述ADB指令由独立于所述被测设备的第二设备发送,所述应用弹窗识别方法由所述第二设备执行。
14.一种应用弹窗识别装置,包括:
第一获取单元,用于获取被测设备当前置顶应用的应用信息和当前焦点窗口的第一窗口信息,所述应用信息中包含有第一包名信息,所述第一窗口信息中包含有第二包名信息,所述被测设备用于运行被测试应用;
弹窗检测单元,用于如果所述第一包名信息和所述第二包名信息不同,则确定检测到跨应用的应用弹窗;
还包括统计单元,其中:
所述第一获取单元,还用于如果所述第一包名信息和所述第二包名信息相同,则获取所述被测设备当前运行所有窗口的第二窗口信息;
所述统计单元,用于根据获取的第二窗口信息中包含的第三包名信息,统计与所述第一包名信息相同的第三包名信息的数量N,所述N为自然数;
所述弹窗检测单元,还用于如果N大于等于2,则确定检测到所述被测试应用内部弹出的应用弹窗。
15.根据权利要求14所述的装置,还包括判断单元和弹窗处理单元,其中:
所述判断单元,用于在所述弹窗检测单元确定检测到弹窗之后,判断检测到的应用弹窗的窗口信息与针对当前测试场景预先定义的任一窗口信息是否相同;
所述弹窗处理单元,用于如果所述判断单元的判断结果为否,则向所述被测设备下发弹窗处理指令。
16.根据权利要求15所述的装置,还包括第二获取单元和第一读取单元,其中:
所述第二获取单元,用于所述弹窗处理单元向所述被测设备下发弹窗处理指令之前,获取检测到的应用弹窗中包含的所有控件元素的控件元素信息;
所述第一读取单元,用于针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为需要点击的控件元素,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;
所述弹窗处理单元,具体用于向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要点击的控件元素的位置信息。
17.根据权利要求16所述的装置,所述第一读取单元,包括:
第一读取子单元,用于针对每一控件元素,读取该控件元素对应的控件元素信息中的控件元素类型信息;
第一判断子单元,用于判断读取的控件元素类型信息是否为按钮BUTTON;
第一确定子单元,用于如果所述第一判断子单元的判断结果为是,则确定该控件元素是需要点击的控件元素;如果所述第一判断子单元的判断结果为否,则确定该控件元素不是需要点击的控件元素。
18.根据权利要求16所述的装置,还包括第二读取单元和第三读取单元,其中:
所述第二读取单元,用于针对每一控件元素,如果根据其对应的控件元素信息确定该控件元素为可勾选的控件元素,则读取该控件元素对应的控件元素信息中包含的该控件元素的控件元素勾选信息;
所述第三读取单元,用于如果读取的控件元素勾选信息为假FALSE,则读取该控件元素对应的控件元素信息中包含的控件元素位置信息;
所述弹窗处理单元,用于向所述被测设备下发点击操作指令,所述点击操作指令中包含有需要勾选的控件元素的位置信息。
19.根据权利要求18所述的装置,所述第二读取单元,包括:
第二读取子单元,用于读取该控件元素对应的控件元素信息中的控件元素类型信息;
第二判断子单元,用于判断读取的控件元素类型信息是否为复选框CHECKBOX;
第二确定子单元,用于如果所述第二判断子单元的判断结果为是,则确定该控件元素是可勾选的控件元素;如果所述第二判断子单元的判断结果为否,则确定该控件元素不是可勾选的控件元素。
20.根据权利要求16所述的装置,所述第二获取单元包括:
第一发送子单元,用于向所述被测设备发送获取检测到的应用弹窗中包含的所有控件元素的控件元素信息的第一信息获取指令;
第一接收子单元,用于接收所述被测设备针对第一信息获取指令返回的、包含有检测到的应用弹窗中包含的所有控件元素的控件元素信息的文件;
解析子单元,用于解析接收到的文件得到检测到的应用弹窗中包含的所有控件元素的控件元素信息。
21.根据权利要求14所述的装置,所述第一获取单元,包括:
第二发送子单元,用于分别向所述被测设备发送获取被测设备当前置顶应用的应用信息的第一信息获取指令和获取被测设备当前焦点窗口的第一窗口信息的第三信息获取指令;
第二接收子单元,用于接收所述被测设备分别针对第一信息获取指令返回的、被测设备当前置顶应用的应用信息和针对第三信息获取指令返回的、被测设备当前焦点窗口的第一窗口信息。
22.根据权利要求14所述的装置,所述第一获取单元,包括:
第三发送子单元,用于向所述被测设备发送获取被测设备当前运行所有窗口的第二窗口信息的第四信息获取指令;
第三接收子单元,用于接收所述被测设备针对所述第四信息获取指令返回的第二窗口信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130846.6A CN105808257B (zh) | 2016-03-08 | 2016-03-08 | 一种应用弹窗识别方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130846.6A CN105808257B (zh) | 2016-03-08 | 2016-03-08 | 一种应用弹窗识别方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808257A CN105808257A (zh) | 2016-07-27 |
CN105808257B true CN105808257B (zh) | 2020-07-07 |
Family
ID=56467934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610130846.6A Active CN105808257B (zh) | 2016-03-08 | 2016-03-08 | 一种应用弹窗识别方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808257B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959064B (zh) * | 2017-05-25 | 2022-11-08 | 腾讯科技(深圳)有限公司 | 自动化测试的弹窗处理方法及装置 |
CN109086096B (zh) * | 2018-06-22 | 2022-09-20 | 北京明华联盟科技有限公司 | Edge浏览器的数据输入方法、电子设备及存储介质 |
CN111246280B (zh) * | 2020-03-04 | 2021-03-16 | 四川长虹电器股份有限公司 | 智能电视自动获取应用弹窗图像的方法 |
CN113608817B (zh) * | 2021-08-19 | 2024-05-07 | 上海幻电信息科技有限公司 | 弹框处理方法及系统 |
CN116069209A (zh) * | 2022-05-16 | 2023-05-05 | 荣耀终端有限公司 | 焦点窗口处理方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620529A (zh) * | 2008-07-03 | 2010-01-06 | 联想(北京)有限公司 | 拦截弹出窗口的方法和系统 |
CN101655839A (zh) * | 2008-08-21 | 2010-02-24 | 英业达股份有限公司 | 窗口选择式即时翻译系统及其方法 |
CN105117643A (zh) * | 2015-09-23 | 2015-12-02 | 北京金山安全软件有限公司 | 一种处理弹窗的方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080244323A1 (en) * | 2007-03-27 | 2008-10-02 | Tim Kelso | Program Test System |
US9015226B2 (en) * | 2011-01-06 | 2015-04-21 | Oracle International Corporation | Techniques for detecting new browser windows |
CN104714725B (zh) * | 2011-12-31 | 2018-10-09 | 北京奇虎科技有限公司 | 一种悬浮窗的显示方法及装置 |
CN103488490A (zh) * | 2013-10-08 | 2014-01-01 | 深圳市金立通信设备有限公司 | 一种确定弹窗所对应的应用的方法、装置及终端 |
CN104091125B (zh) * | 2014-07-18 | 2017-11-17 | 北京奇虎科技有限公司 | 处理悬浮窗的方法及悬浮窗处理装置 |
CN104462952B (zh) * | 2014-12-31 | 2017-11-10 | 北京奇虎科技有限公司 | 一种禁止应用自启动的方法及装置 |
CN105224836B (zh) * | 2015-09-18 | 2018-11-20 | 北京金山安全软件有限公司 | 顶层悬浮窗的控制方法、装置和移动设备 |
CN105303105A (zh) * | 2015-10-20 | 2016-02-03 | 珠海市君天电子科技有限公司 | 窗口消息拦截方法、装置和终端设备 |
-
2016
- 2016-03-08 CN CN201610130846.6A patent/CN105808257B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620529A (zh) * | 2008-07-03 | 2010-01-06 | 联想(北京)有限公司 | 拦截弹出窗口的方法和系统 |
CN101655839A (zh) * | 2008-08-21 | 2010-02-24 | 英业达股份有限公司 | 窗口选择式即时翻译系统及其方法 |
CN105117643A (zh) * | 2015-09-23 | 2015-12-02 | 北京金山安全软件有限公司 | 一种处理弹窗的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105808257A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105808257B (zh) | 一种应用弹窗识别方法和装置 | |
US10140014B2 (en) | Method and terminal for activating application based on handwriting input | |
WO2021208512A1 (zh) | 用户界面的控件信息的获取方法、装置、终端及存储介质 | |
US9280451B2 (en) | Testing device | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
CN110598868A (zh) | 一种机器学习模型搭建方法、装置及相关设备 | |
CN103034575A (zh) | 崩溃分析方法和装置 | |
CN113626102A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN103049373A (zh) | 一种崩溃的定位方法和装置 | |
CN109597755A (zh) | 文本显示的检测方法、装置、存储介质和电子设备 | |
CN108845924B (zh) | 控制响应区域显示控制方法、电子装置及存储介质 | |
CN112286782B (zh) | 控件遮挡检测方法、软件检测方法、装置及介质 | |
EP2360578B1 (en) | A method for detecting user screens in mobile devices working under symbian operating system | |
CN111061448A (zh) | 日志信息的显示方法、装置、电子设备及存储介质 | |
CN109032911B (zh) | 用于移动设备的帧率检测方法、装置及电子设备 | |
CN114218072A (zh) | 测试脚本生成方法、装置、存储介质及计算机设备 | |
KR101796009B1 (ko) | 프로그램 자동 분석 시스템 및 이를 이용한 자동분석 방법 | |
CN110275753B (zh) | 应用程序的增值业务获取方法、装置及设备 | |
US20090094614A1 (en) | Direct synchronous input | |
CN110851153A (zh) | 一种流水线设备的升级方法及系统 | |
CN115098116A (zh) | 应用程序的模拟操作方法、装置、终端及存储介质 | |
CN114327709A (zh) | 一种控制页面生成方法、装置、智能设备及存储介质 | |
CN114398290A (zh) | 一种程序调试方法、装置、设备及介质 | |
CN113238969A (zh) | 界面自动化测试方法、装置、设备及存储介质 | |
CN110519650A (zh) | 一种osd语言升级方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou NetEase Shuzhifan Technology Co.,Ltd. Address before: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province Patentee before: HANGZHOU LANGHE TECHNOLOGY Ltd. |
|
CP01 | Change in the name or title of a patent holder |