CN113050956B - 用于自动安装应用的方法、设备、介质及程序产品 - Google Patents
用于自动安装应用的方法、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN113050956B CN113050956B CN202110350757.3A CN202110350757A CN113050956B CN 113050956 B CN113050956 B CN 113050956B CN 202110350757 A CN202110350757 A CN 202110350757A CN 113050956 B CN113050956 B CN 113050956B
- Authority
- CN
- China
- Prior art keywords
- password
- page
- input
- equipment
- control
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请的目的是提供一种用于自动安装应用的方法、设备、介质及程序产品,该方法包括:获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,本申请通过对第二自动化控制服务(例如,uiautomator2服务)进行简易二次开发,实现用户设备上应用安装过程的完整自动化,不需要用户手动输入密码和手动点击按钮,开发代码量较小,同时易操作且可拓展性强,来实现健壮的自动化安装。
Description
技术领域
本申请涉及通信领域,尤其涉及一种用于自动安装应用的技术。
背景技术
移动端APP自动化测试前提都需要给设备安装好测试APP,安装APP操作通过调试工具命令完成,部分移动端设备安装过程发现需要手动输入密码和手动点击按钮才能完成安装,亟需自动化解决。目前市面上大体有2种解决方案,其一是基于AccessibilityService的脚本维护方案(通过shell脚本或者apk开发),明显弊端是兼容性不足/代码量过大/可拓展空间无/难上手;其二是基于绕过密码的分步安装(先push到sd卡再安装),明显弊端是只能绕过密码输入功能性不足。
发明内容
本申请的一个目的是提供一种用于自动安装应用的方法、设备、介质及程序产品。
根据本申请的一个方面,提供了一种用于自动安装应用的方法,该方法包括:
获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制;
获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮;
为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空;
开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。
根据本申请的一个方面,提供了一种用于自动安装应用的网络设备,该设备包括:
一一模块,用于获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制;
一二模块,用于获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮;
一三模块,用于为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空;
一四模块,用于开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。
根据本申请的一个方面,提供了一种用于自动安装应用的计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现如上所述任一方法的操作。
根据本申请的一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如上所述任一方法的操作。
根据本申请的一个方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述任一方法的步骤。
与现有技术相比,本申请通过获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制;获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮;为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮;开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用,也即通过对第二自动化控制服务(例如,uiautomator2服务)进行简易二次开发,实现用户设备上应用安装过程的完整自动化,不需要用户手动输入密码和手动点击按钮,开发代码量较小,同时易操作且可拓展性强,来实现健壮的自动化安装。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个实施例的一种自动安装应用的方法流程图;
图2示出根据本申请一个实施例的一种自动安装应用的网络设备结构图;
图3示出根据本申请一个实施例的一种在第二自动化控制服务中增加自定义的自动输入密码方法的方法流程图;
图4示出根据本申请一个实施例的一种在第二自动化控制服务中增加自定义的自动点击确认按钮方法的方法流程图;
图5示出可被用于实施本申请中所述的各个实施例的示例性系统。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如,中央处理器(Central Processing Unit,CPU))、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash Memory)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PCM)、可编程随机存取存储器(Programmable Random Access Memory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请所指设备包括但不限于终端、网络设备、或终端与网络设备通过网络相集成所构成的设备。所述终端包括但不限于任何一种可与用户进行人机交互(例如通过触摸板进行人机交互)的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如Android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程门阵列(Field ProgrammableGate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备还可以是运行于所述终端、网络设备、或终端与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的程序。
当然,本领域技术人员应能理解上述设备仅为举例,其他现有的或今后可能出现的设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在本申请的描述中,“多个”的含义是两个或者更多,除非另有明确具体的限定。
图1示出根据本申请一个实施例的一种自动安装应用的方法流程图,该方法包括步骤S11、步骤S12、步骤S13和步骤S14。在步骤S11中,网络设备获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制;在步骤S12中,网络设备获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮;在步骤S13中,网络设备为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空;在步骤S14中,网络设备开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。
在步骤S11中,网络设备获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制。在一些实施例中,网络设备是指测试服务器,用于维护和运行自动化测试脚本,网络设备使用的操作系统包括但不限于centos(Community Enterprise OperatingSystem,社区企业操作系统)、windows等。用户设备包括但不限于手机、平板电脑等移动终端。在一些实施例中,用户设备可以通过有线方式(例如,usb)连接网络设备,或者,用户设备还可以通过无线方式(例如,wifi)连接网络设备。在一些实施例中,第一自动化控制服务包括但不限于任何用于自动化控制用户设备的服务,例如UiAutomator服务,UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,需要运行在安卓手机上,基于Accessibility服务,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1.测试脚本只能使用Java语言2.测试脚本要打包成jar或者apk包上传到设备上才能运行。在一些实施例中,本方案在用户设备上安装并运行了一个http远程调用服务(即http rpc服务),该http rpc服务封装了UiAutomator服务,将UiAutomator中的功能开放出来,屏蔽不同用户设备的系统差异,开放出统一的http接口供使用,然后再将这些http接口封装成Python库(即第二自动化控制服务,例如,uiautomator2服务),通过在网络设备上安装第二自动化控制服务,第二自动化控制服务会将用户编写的基于该Python库的自动化测试Python脚本(例如,通过调用uiautomator2服务提供的接口编写的自动化测试Python脚本)所执行每个操作转换成一个对http rpc服务的http请求,http rpc服务接收并解析这些http请求,然后调用UiAutomator的api来实现对用户设备的自动控制。在一些实施例中,在网络设备上安装第二自动化控制服务前,需要先在该网络设备上搭建python环境。在一些实施例中,还需要在用户设备上安装atx-agent(守护进程),然后通过atx-agent启动http rpc服务并进行监听,监听网络设备发送过来的http请求并将其转发给http rpc服务。在一些实施例中,若用户设备通过wifi连接网络设备,则可以将IP地址作为用户设备的设备标识信息,若用户设备通过usb连接网络设备,则可以将设备序列号作为用户设备的设备标识信息。在一些实施例中,可以通过调用connect方法,并将用户设备的设备标识信息输入connect方法,connect方法的输出结果就是用户设备对应的设备对象,示例代码如下:import uiautomator2 as u2;d=u2.connect(deviceid),其中,import uiautomator2用于导入第二自动化控制服务(uiautomator2服务),deviceid是用户设备的设备标识信息(设备序列号),d是通过connect方法获得的用户设备对应的设备对象。
在步骤S12中,网络设备获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮。在一些实施例中,设备对象对应的观察对象watcher是一个观察者,它可以检测到用户设备页面中的变化,比如某个文本/描述/类名等的出现或者改变,然后进行下一步的点击、输入文本等操作,以实现对用户设备的自动控制,例如,d是设备对象,则可以通过d.watcher来获得该设备对象对应的观察对象。在一些实施例中,为观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将第一监听事件对应的触发响应设置为在好入密码页面中的密码输入框中自动输入用户设备对应的设备密码并自动点击该入密码页面中第一确认按钮,具体地,第一监听事件可以是输入密码页面上的某个文本信息,也可以是输入密码页面对应的类名信息,还可以是输入密码页面对应的任何区别于安装应用过程中所呈现的其他页面的描述信息,例如,可以通过调用观察对象watcher的when方法来给其注册输入密码页面对应的类名信息(例如,“com.xxx.PasswordActivity”),或者,还可以通过调用观察对象watcher的when方法来给其注册输入密码页面上的某个文本信息(例如,“忘记密码”),例如,d.watcher(“忘记密码”),或者,还可以同时注册输入密码页面上的多个文本信息(例如,“忘记密码”、“安装”),d.watcher(“忘记密码”).when(“安装”),后续在安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为输入密码页面时,会自动调用第一监听事件对应的触发响应方法,并在该触发响应方法中,在该输入密码页面中的密码输入框中自动输入用户设备对应的设备密码(例如,根据密码输入框在输入密码页面中的标识信息(例如,控件id),获取密码输入框对应的控件对象,并调用该控件对象的设置文本方法(例如,输入参数为具体文本的set_text方法),以实现在密码输入框中自动输入设备密码)并自动点击该输入密码页面中第一确认按钮(例如,调用第一确认按钮对应的控件对象的点击方法(例如,输入参数缺省的click方法),以实现自动点击第一确认按钮),从而实现自动开始安装应用,或者,自动跳转到安装应用过程中的该输入密码页面对应的下一个页面。
在步骤S13中,网络设备为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空。在一些实施例中,由于点击确认页面中的第二确认按钮对应的文本属性为空(例如,点击确认页面上虽然能看到“安装”字样的第二确认按钮,但其对应的文本属性为空),在某些特殊情况下,可能会导致通过调用观察对象watcher的when方法来给该观察对象注册关于第二确认按钮上所呈现的文本信息(例如,“安装”)的第二监听事件,但是该第二监听事件失效,即d.watcher.when(“安装”)起不到监听该点击确认页面的作用,无法自动调用该第二监听事件对应的触发响应。在另一些实施例中,由于点击确认页面中的第二确认按钮对应的文本属性为空,在某些特殊情况下,虽然仍然可以通过调用观察对象watcher的when方法来给该观察对象注册关于第二确认按钮上所呈现的文本信息的第二监听事件,该第二监听事件并不会失效,即d.watcher.when(“安装”)仍然可以起到监听该点击确认页面的作用,仍然可以正常自动调用该第二监听事件对应的触发响应,但是在后续安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为该点击确认页面并自动调用该第二确认按钮对应的控件对象的点击方法(例如,输入参数缺省的click方法)时,可能会导致该点击方法起不到实际作用。在一些实施例中,可以通过调用观察对象watcher的when方法来给该观察对象注册关于该点击确认页面上对应的文本属性不为空的其他控件所呈现的文本信息(例如,“来自电脑端未知来源”)的第一监听事件,例如,通过d.watcher.when(“来自电脑端未知来源”)来监听该点击确认页面。在一些实施例中,将第二监听事件对应的触发响应设置为根据第二确认按钮在用户设备屏幕上的位置信息自动点击第二确认按钮,在后续安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为该点击确认页面时,自动调用设备对象的根据位置信息点击某个控件对象的方法(例如,输入参数为某个具体位置信息的click方法),并将第二确认按钮在用户设备屏幕上的位置信息(例如,第二确认按钮所在呈现区域中的某个像素点的位置信息,优选地,第二确认按钮所在呈现区域的中心像素点的位置信息)传入该方法,从而实现自动点击第二确认按钮,其中,位置信息是指点击位置在用户设备屏幕对应的屏幕坐标系中的坐标值,可以是绝对坐标,可以是相对坐标,例如,位置信息可以是点击位置在屏幕坐标系中的横坐标和纵坐标的百分比值,例如,(0.5,0.8)。
在步骤S14中,网络设备开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。在一些实施例中,可以通过观察对象watcher的传入参数缺省的start方法来开启watcher,例如,d.watcher.start()。在一些实施例中,可以在开启watcher的同时设置watcher的监听间隔,例如,可以通过观察对象watcher的传入参数为某个监听间隔的satrt方法来开启watcher,例如,d.watcher.start(2.0),设置watcher的监听间隔为2秒,即watcher每隔2秒监听一次。在一些实施例中,在用户设备上执行用于安装目标应用的调试工具命令,例如adb(Android Debug Bridge,安卓调试工具)命令,以在用户设备上自动安装目标应用,例如,“adb install apk_dir”,其中,apk_dir为目标应用的安装包在用户设备上的存放地址路径。在一些实施例中,还可以直接在用户设备上执行第二自动化控制服务对调试工具命令进行封装后所提供的用于安装目标应用的python命令,例如,对add install命令进行封装后所提供的用于安装目标应用的python命令“python–m adbutils–s deviceid–i apk_dir”,其中,deviceid是用户设备的设备标识信息,该python命令的执行结果为目标应用在用户设备上的安装结果,即安装成功或安装失败。
本申请通过对第二自动化控制服务(例如,uiautomator2服务)进行简易二次开发,实现用户设备上应用安装过程的完整自动化,不需要用户手动输入密码和手动点击按钮,开发代码量较小,同时易操作且可拓展性强,来实现健壮的自动化安装。
在一些实施例中,所述为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,包括:为所述观察对象注册关于所述输入密码页面上的至少一个UI控件对应的至少一个文本属性的第一监听事件,其中,所述至少一个文本属性区别于所述安装应用过程中的其他页面上的UI控件对应的文本属性。在一些实施例中,可以通过调用观察对象watcher的when方法来给其注册输入密码页面上所呈现的某个文本信息(即注册输入密码页面上的某个UI控件对应的文本属性中的全部或部分文本信息(例如,“忘记密码”),例如,d.watcher(“忘记密码”),后续在安装应用过程中,若观察对象watcher监听到当前呈现页面上呈现有文本信息“忘记密码”,则可以确定当前呈现页面为输入密码页面,或者,还可以同时注册输入密码页面上所呈现的多个文本信息(例如,“忘记密码”、“安装”),例如,d.watcher(“忘记密码”).when(“安装”),后续在安装应用过程中,若观察对象watcher监听到当前呈现页面上同时呈现有文本信息“忘记密码”与文本信息“安装”,则可以确定当前呈现页面为输入密码页面。在一些实施例中,在观察对象watcher监听到用户设备中的当前呈现页面变化为输入密码页面时,会自动调用第一监听事件对应的触发响应方法,以实现在输入密码页面中的密码输入框中自动输入用户设备对应的设备密码并自动点击输入密码页面中的第一确认按钮。在一些实施例中,给观察对象注册的文本信息需要区别于安装应用过程中的除该输入密码页面以外的其他页面上所呈现的文本信息,即若只注册了一个文本信息,则需要该文本信息不在其他页面上呈现,若同时注册了多个文本信息,则需要该多个文本信息不同时在某个其他页面上呈现,从而避免观察对象watcher的错误监听。
在一些实施例中,所述方法还包括:网络设备在所述第二自动化控制服务中增加自动输入密码方法,其中,所述自动输入密码方法的输入参数为所述设备对象及所述设备密码;在所述自动输入密码方法中,调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码;获得所述第一确认按钮对应的第一控件对象,调用所述第一控件对象的点击方法,以实现自动点击所述第一确认按钮;其中,所述将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮,包括:将所述第一监听事件对应的触发响应设置为调用所述自动输入密码方法。在一些实施例中,如图3所示,在第二自动化控制服务中增加自定义的自动输入密码方法(例如,通过对uiautomator2服务的watcher.py源码进行简易二次开发,在watcher.py中增加一个自定义的自动输入密码方法),该自动输入密码方法的输入参数为设备对象及设备密码,在该自动输入密码方法中,通过该设备对象获得自动输入密码框对应的第二控件对象,然后调用该第二控件对象的设置文本方法(例如,输入参数为具体文本的set_text方法),并向该设置文本方法传入该设备密码,从而实现在密码输入框中自动输入设备密码,然后通过该设备对象获得第一确认按钮对应的第一控件对象,并调用该第一控件对象的点击方法(例如,输入参数缺省的click方法),以实现在自动输入设备密码后自动点击第一确认按钮。在一些实施例中,将第一监听事件对应的触发响应设置为调用该自动输入密码方法,示例代码如下:d.watcher(“忘记密码”).when(“安装”).enter_passwd(d,password),其中,enter_passwd为自动输入密码方法,password为用户设备的设备密码,从而在后续安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为输入密码页面时,自动调用该自动输入密码方法,来实现在输入密码页面中的密码输入框中自动输入该设备密码并自动点击该输入密码页面中的第一确认按钮。
在一些实施例中,所述调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,包括:调用所述设备对象的调试工具广播方法将所述设备密码广播出去,以使所述密码输入框对应的第二控件对象接收到所述设备密码,并调用所述第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,其中,所述密码输入框默认拥有所述输入密码页面的焦点。在一些实施例中,在无法通过设备对象获得密码输入框对应的第二控件对象的情况下,或者,在无法获得密码输入框在输入密码页面中的标识信息(例如,控件id)的情况下,可以通过调用设备对象的send_keys方法(安卓系统对应的调试工具广播方法,即adb广播方法,其他系统对应的调试工具广播方法在此不再赘述,本领域技术人员应能理解),并向该方法传入设备密码,以此来实现将该设备密码广播出去,示例代码如下:d.send_keys(password),其中,password为用户设备的设备密码,此时,当前页面上所呈现的可输入文本(例如,有setText方法)的UI控件对应的控件对象(例如,EditText)会接收到该设备密码,然后调用该控件对象的设置文本方法(例如,输入参数为具体文本的set_text方法),并向该设置文本方法传入该设备密码,从而实现在密码输入框中自动输入设备密码。在一些实施例中,若输入密码页面上仅存在一个输入框即密码输入框,则只有该密码输入框可以接收到该设备密码,在一些实施例中,若输入密码页面上同时存在多个输入框,则该多个输入框中拥有该输入密码页面焦点的输入框可以接收到该设备密码,通常情况下,密码输入框默认拥有该输入密码页面的焦点,即在应用的安装过程中,当从其他页面跳转到输入密码页面时,密码输入框默认拥有该输入密码页面的焦点。在一些实施例中,可以在通过调用设备对象的send_keys方法时,向该方法同时传入设备密码及“clear=True”,以此来先清除该密码输入框内的默认文本信息(例如,密码提示信息),再在该密码输入框中自动输入该设备密码,示例代码如下:d.send_keys(password,clear=True),其中,password为用户设备的设备密码。在一些实施例中,在不同的用户设备上安装目标应用时,密码输入框在输入密码页面中的标识信息可能不一样,因此需要在不同的用户设备上分别获取密码输入框对应的标识信息,较为繁琐,此时,通过调用设备对象的send_keys方法,兼容性更强,代码也更简易,从而可以提高自动安装的效率。
在一些实施例中,所述调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,包括:根据所述密码输入框在所述输入密码页面中的标识信息,获取所述密码输入框对应的第二控件对象,并调用所述第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码。在一些实施例中,可以先获取密码输入框在输入密码页面中的标识信息(例如,控件id),然后通过该标识信息来获得该密码输入框对应的第二控件对象,并调用该第二控件对象的设置文本方法(例如,输入参数为具体文本的set_text方法),并向该设置文本方法传入该设备密码,从而实现在密码输入框中自动输入设备密码。
在一些实施例中,所述网络设备已安装UI控件查看服务;其中,所述方法还包括:网络设备基于所述UI控件查看服务,获取所述密码输入页面对应的UI控件结构树,其中,所述UI控件结构树包括所述密码输入页面上所呈现的多个UI控件及每个UI控件在所述密码输入页面中的定位信息;根据所述UI控件结构树,确定所述第二确定按钮在所述输入密码页面中的标识信息。在一些实施例中,UI控件查看服务(例如,基于浏览器技术的WEditor服务)用于查看用户设备的当前呈现页面上的每个UI控件在当前呈现页面中的定位信息,该定位信息包括但不限于每个UI控件的控件类型信息、坐标信息、控件ID、描述信息、UI层级信息等,根据某个UI控件对应的定位信息,可以在当前呈现页面中定位到该UI控件。在一些实施例中,可以根据某个UI控件对应的定位信息,确定该UI控件在当前呈现页面中的标识信息,然后通过该标识信息来获得该UI控件对应的控件对象,具体得,可以将该定位信息中的控件类型信息、坐标信息、控件ID、描述信息、UI层级信息等信息中的一项或多项,作为该UI控件在当前呈现页面中的标识信息。
在一些实施例中,所述至少一个文本属性包括所述第一确认按钮对应的第一文本属性,且所述第一文本属性在所述第一监听事件中的注册顺序排在所述至少一个文本属性的最后;其中,所述获得所述第一确认按钮对应的第一控件对象,包括:通过调用获取与所述第一监听事件中的最后一个注册对象相匹配的控件对象的方法,获得所述第一确认按钮对应的第一控件对象。在一些实施例中,可以通过调用观察对象watcher的when方法来给其同时注册输入密码页面上所呈现的多个文本信息(例如,“忘记密码”、“安装”),d.watcher(“忘记密码”).when(“安装”),该多个文本信息存在注册先后顺序,例如,“忘记密码”的注册顺序排在“安装”的注册顺序之前。在一些实施例中,可以通过调用观察对象watcher的get_last_match方法,获得与观察对象watcher在第一监听事件中的最后一个注册对象相匹配的控件对象,并将其作为第一确定按钮对应的第一控件对象,例如,d.watcher(“忘记密码”).when(“安装”),“安装”是第一确定按钮对应的文本属性中的全部或部分文本信息,且“安装”在第一监听事件中的注册顺序排在该多个文本信息(“忘记密码”、“安装”)中的最后,此时,通过调用观察对象watcher的get_last_match方法,可以获得与观察对象watcher在第一监听事件中的最后一个注册对象“安装”相匹配的控件对象即第一确定按钮对应的第一控件对象,然后调用该第一控件对象的点击方法(例如,输入参数缺省的click方法),从而实现在输入密码页面中自动点击该第一确认按钮,其示例代码如下:get_last_match().click(),从而可以简化获取该第一确定按钮对应的第一控件对象的过程,从而不需要先获得该第一确定按钮在该输入密码页面中的标识信息然后再根据该标识信息才可以获得该第一确定按钮对应的第一控件对象。
在一些实施例中,所述为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,包括:为所述观察对象注册关于所述点击确认页面上的至少一个UI控件对应的至少一个文本属性的第二监听事件,其中,所述至少一个文本属性区别于所述安装应用过程中的其他页面上的UI控件对应的文本属性。在一些实施例中,可以通过调用观察对象watcher的when方法来给其注册该点击确认页面所呈现的某个文本信息(即该点击确认页面上的某个UI控件对应的文本属性中的全部或部分文本信息(例如,“来自电脑端未知来源”),例如,d.watcher(“来自电脑端未知来源”),后续在安装应用过程中,若观察对象watcher监听到当前呈现页面上呈现有文本信息“来自电脑端未知来源”,则可以确定当前呈现页面为该点击确认页面,或者,还可以同时注册该点击确认页面上所呈现的多个文本信息(例如,“来自电脑端未知来源”、“应用权项”),例如,d.watcher(“来自电脑端未知来源”).when(“应用权项”),后续在安装应用过程中,若观察对象watcher监听到当前呈现页面上同时呈现有文本信息“来自电脑端未知来源”与文本信息“应用权项”,则可以确定当前呈现页面为该点击确认页面。在一些实施例中,在观察对象watcher监听到用户设备中的当前呈现页面变化为该点击确认页面时,会自动调用第二监听事件对应的触发响应方法,以实现根据该点击确认页面中的第二确认按钮在用户设备屏幕上的位置信息自动点击该第二确认按钮。在一些实施例中,给观察对象注册的文本信息需要区别于安装应用过程中的除该点击确认页面以外的其他页面上所呈现的文本信息,即若只注册了一个文本信息,则需要该文本信息不在其他页面上呈现,若同时注册了多个文本信息,则需要该多个文本信息不同时在某个其他页面上呈现,从而避免观察对象watcher的错误监听。
在一些实施例中,所述方法还包括:网络设备在所述第二用户设备自动化操作服务中增加自动点击确认按钮方法,其中,所述自动点击确认按钮的输入参数为所述设备对象及所述第二确定按钮在用户设备屏幕上的位置信息;在所自动点击确认按钮方法中,调用所述设备对象的第二点击方法,并向所述第二点击方法传入所述位置信息,以实现自动点击所述第二确认按钮;其中,所述将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在用户设备屏幕上的位置信息自动点击所述第二确认按钮,包括:将所述第二监听事件对应的触发响应设置为调用所述自动点击确认按钮方法。在一些实施例中,可以通过UI控件查看服务(例如,基于浏览器技术的WEditor服务),获得该点击确认页面上所呈现的第二确认按钮在用户设备屏幕上的位置信息(例如,坐标信息)。在一些实施例中,如图4所示,在第二自动化控制服务中增加自定义的自动点击确认按钮方法(例如,通过对uiautomator2服务的watcher.py源码进行简易二次开发,在watcher.py中增加一个自定义的自动点击确认按钮方法),该自动点击确认按钮方法的输入参数为设备对象及第二确认按钮在用户设备屏幕上的位置信息,在该自动点击确认按钮方法中,通过调用该设备对象的根据位置信息点击某个控件对象的第二点击方法(例如,输入参数为某个具体位置信息的click方法),并向该第二点击方法传入该第二确认按钮在用户设备屏幕上的位置信息,从而实现自动点击该点击确认页面中的第二确认按钮,第二点击方法的示例代码如下:d.click(offset[0],offset[1]),其中,offset[0]为第二确认按钮在用户设备屏幕上的横坐标值,,offset[1]为第二确认按钮在用户设备屏幕上的纵坐标值。在一些实施例中,第二确认按钮在用户设备屏幕上的位置信息可以是该点击确认页面上的该第二确认按钮所在呈现区域中的某个像素点的位置信息,优选地,可以是该第二确认按钮所在呈现区域的中心像素点的位置信息。在一些实施例中,将第二监听事件对应的触发响应设置为调用该自动点击确认按钮方法,其对应的示例代码如下:d.watcher(“来自电脑端未知来源”).when(“应用权项”).click_install(d,offset[0],offset[1]),其中,click_install为自动点击确认按钮方法,从而在后续安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为该点击确认页面时,自动调用该自动点击确认按钮方法,从而实现在该点击确认页面中自动点击该第二确认按钮。
图2示出根据本申请一个实施例的一种自动安装应用的网络设备结构图,该设备包括一一模块11、一二模块12、一三模块13和一四模块14。一一模块11,用于获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制;一二模块12,用于获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮;一三模块13,用于为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空;一四模块14,用于开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。
一一模块11,用于获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制。在一些实施例中,网络设备是指测试服务器,用于维护和运行自动化测试脚本,网络设备使用的操作系统包括但不限于centos(Community Enterprise Operating System,社区企业操作系统)、windows等。用户设备包括但不限于手机、平板电脑等移动终端。在一些实施例中,用户设备可以通过有线方式(例如,usb)连接网络设备,或者,用户设备还可以通过无线方式(例如,wifi)连接网络设备。在一些实施例中,第一自动化控制服务包括但不限于任何用于自动化控制用户设备的服务,例如UiAutomator服务,UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,需要运行在安卓手机上,基于Accessibility服务,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1.测试脚本只能使用Java语言2.测试脚本要打包成jar或者apk包上传到设备上才能运行。在一些实施例中,本方案在用户设备上安装并运行了一个http远程调用服务(即http rpc服务),该http rpc服务封装了UiAutomator服务,将UiAutomator中的功能开放出来,屏蔽不同用户设备的系统差异,开放出统一的http接口供使用,然后再将这些http接口封装成Python库(即第二自动化控制服务,例如,uiautomator2服务),通过在网络设备上安装第二自动化控制服务,第二自动化控制服务会将用户编写的基于该Python库的自动化测试Python脚本(例如,通过调用uiautomator2服务提供的接口编写的自动化测试Python脚本)所执行每个操作转换成一个对http rpc服务的http请求,http rpc服务接收并解析这些http请求,然后调用UiAutomator的api来实现对用户设备的自动控制。在一些实施例中,在网络设备上安装第二自动化控制服务前,需要先在该网络设备上搭建python环境。在一些实施例中,还需要在用户设备上安装atx-agent(守护进程),然后通过atx-agent启动http rpc服务并进行监听,监听网络设备发送过来的http请求并将其转发给http rpc服务。在一些实施例中,若用户设备通过wifi连接网络设备,则可以将IP地址作为用户设备的设备标识信息,若用户设备通过usb连接网络设备,则可以将设备序列号作为用户设备的设备标识信息。在一些实施例中,可以通过调用connect方法,并将用户设备的设备标识信息输入connect方法,connect方法的输出结果就是用户设备对应的设备对象,示例代码如下:import uiautomator2 as u2;d=u2.connect(deviceid),其中,import uiautomator2用于导入第二自动化控制服务(uiautomator2服务),deviceid是用户设备的设备标识信息(设备序列号),d是通过connect方法获得的用户设备对应的设备对象。
一二模块12,用于获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮。在一些实施例中,设备对象对应的观察对象watcher是一个观察者,它可以检测到用户设备页面中的变化,比如某个文本/描述/类名等的出现或者改变,然后进行下一步的点击、输入文本等操作,以实现对用户设备的自动控制,例如,d是设备对象,则可以通过d.watcher来获得该设备对象对应的观察对象。在一些实施例中,为观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将第一监听事件对应的触发响应设置为在好入密码页面中的密码输入框中自动输入用户设备对应的设备密码并自动点击该入密码页面中第一确认按钮,具体地,第一监听事件可以是输入密码页面上的某个文本信息,也可以是输入密码页面对应的类名信息,还可以是输入密码页面对应的任何区别于安装应用过程中所呈现的其他页面的描述信息,例如,可以通过调用观察对象watcher的when方法来给其注册输入密码页面对应的类名信息(例如,“com.xxx.PasswordActivity”),或者,还可以通过调用观察对象watcher的when方法来给其注册输入密码页面上的某个文本信息(例如,“忘记密码”),例如,d.watcher(“忘记密码”),或者,还可以同时注册输入密码页面上的多个文本信息(例如,“忘记密码”、“安装”),d.watcher(“忘记密码”).when(“安装”),后续在安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为输入密码页面时,会自动调用第一监听事件对应的触发响应方法,并在该触发响应方法中,在该输入密码页面中的密码输入框中自动输入用户设备对应的设备密码(例如,根据密码输入框在输入密码页面中的标识信息(例如,控件id),获取密码输入框对应的控件对象,并调用该控件对象的设置文本方法(例如,输入参数为具体文本的set_text方法),以实现在密码输入框中自动输入设备密码)并自动点击该输入密码页面中第一确认按钮(例如,调用第一确认按钮对应的控件对象的点击方法(例如,输入参数缺省的click方法),以实现自动点击第一确认按钮),从而实现自动开始安装应用,或者,自动跳转到安装应用过程中的该输入密码页面对应的下一个页面。
一三模块13,用于为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空。在一些实施例中,由于点击确认页面中的第二确认按钮对应的文本属性为空(例如,点击确认页面上虽然能看到“安装”字样的第二确认按钮,但其对应的文本属性为空),在某些特殊情况下,可能会导致通过调用观察对象watcher的when方法来给该观察对象注册关于第二确认按钮上所呈现的文本信息(例如,“安装”)的第二监听事件,但是该第二监听事件失效,即d.watcher.when(“安装”)起不到监听该点击确认页面的作用,无法自动调用该第二监听事件对应的触发响应。在另一些实施例中,由于点击确认页面中的第二确认按钮对应的文本属性为空,在某些特殊情况下,虽然仍然可以通过调用观察对象watcher的when方法来给该观察对象注册关于第二确认按钮上所呈现的文本信息的第二监听事件,该第二监听事件并不会失效,即d.watcher.when(“安装”)仍然可以起到监听该点击确认页面的作用,仍然可以正常自动调用该第二监听事件对应的触发响应,但是在后续安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为该点击确认页面并自动调用该第二确认按钮对应的控件对象的点击方法(例如,输入参数缺省的click方法)时,可能会导致该点击方法起不到实际作用。在一些实施例中,可以通过调用观察对象watcher的when方法来给该观察对象注册关于该点击确认页面上对应的文本属性不为空的其他控件所呈现的文本信息(例如,“来自电脑端未知来源”)的第一监听事件,例如,通过d.watcher.when(“来自电脑端未知来源”)来监听该点击确认页面。在一些实施例中,将第二监听事件对应的触发响应设置为根据第二确认按钮在用户设备屏幕上的位置信息自动点击第二确认按钮,在后续安装应用过程中,在观察对象watcher监听到用户设备中的当前呈现页面变化为该点击确认页面时,自动调用设备对象的根据位置信息点击某个控件对象的方法(例如,输入参数为某个具体位置信息的click方法),并将第二确认按钮在用户设备屏幕上的位置信息(例如,第二确认按钮所在呈现区域中的某个像素点的位置信息,优选地,第二确认按钮所在呈现区域的中心像素点的位置信息)传入该方法,从而实现自动点击第二确认按钮,其中,位置信息是指点击位置在用户设备屏幕对应的屏幕坐标系中的坐标值,可以是绝对坐标,可以是相对坐标,例如,位置信息可以是点击位置在屏幕坐标系中的横坐标和纵坐标的百分比值,例如,(0.5,0.8)。
一四模块14,用于开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。在一些实施例中,可以通过观察对象watcher的传入参数缺省的start方法来开启watcher,例如,d.watcher.start()。在一些实施例中,可以在开启watcher的同时设置watcher的监听间隔,例如,可以通过观察对象watcher的传入参数为某个监听间隔的satrt方法来开启watcher,例如,d.watcher.start(2.0),设置watcher的监听间隔为2秒,即watcher每隔2秒监听一次。在一些实施例中,在用户设备上执行用于安装目标应用的调试工具命令,例如adb(AndroidDebug Bridge,安卓调试工具)命令,以在用户设备上自动安装目标应用,例如,“adbinstall apk_dir”,其中,apk_dir为目标应用的安装包在用户设备上的存放地址路径。在一些实施例中,还可以直接在用户设备上执行第二自动化控制服务对调试工具命令进行封装后所提供的用于安装目标应用的python命令,例如,对add install命令进行封装后所提供的用于安装目标应用的python命令“python–m adbutils–s deviceid–i apk_dir”,其中,deviceid是用户设备的设备标识信息,该python命令的执行结果为目标应用在用户设备上的安装结果,即安装成功或安装失败。
本申请通过对第二自动化控制服务(例如,uiautomator2服务)进行简易二次开发,实现用户设备上应用安装过程的完整自动化,不需要用户手动输入密码和手动点击按钮,开发代码量较小,同时易操作且可拓展性强,来实现健壮的自动化安装。
在一些实施例中,所述为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,包括:为所述观察对象注册关于所述输入密码页面上的至少一个UI控件对应的至少一个文本属性的第一监听事件,其中,所述至少一个文本属性区别于所述安装应用过程中的其他页面上的UI控件对应的文本属性。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述设备还用于:在所述第二自动化控制服务中增加自动输入密码方法,其中,所述自动输入密码方法的输入参数为所述设备对象及所述设备密码;在所述自动输入密码方法中,调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码;获得所述第一确认按钮对应的第一控件对象,调用所述第一控件对象的点击方法,以实现自动点击所述第一确认按钮;其中,所述将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮,包括:将所述第一监听事件对应的触发响应设置为调用所述自动输入密码方法。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,包括:调用所述设备对象的调试工具广播方法将所述设备密码广播出去,以使所述密码输入框对应的第二控件对象接收到所述设备密码,并调用所述第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,其中,所述密码输入框默认拥有所述输入密码页面的焦点。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,包括:根据所述第二确定按钮在所述输入密码页面中的标识信息,获取所述第二确认按钮对应的第二控件对象,并调用所述第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述网络设备已安装UI控件查看服务;其中,所述方法还包括:网络设备基于所述UI控件查看服务,获取所述密码输入页面对应的UI控件结构树,其中,所述UI控件结构树包括所述密码输入页面上所呈现的多个UI控件及每个UI控件在所述密码输入页面中的定位信息;根据所述UI控件结构树,确定所述第二确定按钮在所述输入密码页面中的标识信息。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述至少一个文本属性包括所述第一确认按钮对应的第一文本属性,且所述第一文本属性在所述第一监听事件中的注册顺序排在所述至少一个文本属性的最后;其中,所述获得所述第一确认按钮对应的第一控件对象,包括:通过调用获取与所述第一监听事件中的最后一个注册对象相匹配的控件对象的方法,获得所述第一确认按钮对应的第一控件对象。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,包括:为所述观察对象注册关于所述点击确认页面上的至少一个UI控件对应的至少一个文本属性的第二监听事件,其中,所述至少一个文本属性区别于所述安装应用过程中的其他页面上的UI控件对应的文本属性,且所述至少一个UI控件包括所述第二确认按钮。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
在一些实施例中,所述设备还用于:在所述第二用户设备自动化操作服务中增加自动点击确认按钮方法,其中,所述自动点击确认按钮的输入参数为所述设备对象及所述第二确定按钮在用户设备屏幕上的位置信息;在所自动点击确认按钮方法中,调用所述设备对象的第二点击方法,并向所述第二点击方法传入所述位置信息,以实现自动点击所述第二确认按钮;其中,所述将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在用户设备屏幕上的位置信息自动点击所述第二确认按钮,包括:将所述第二监听事件对应的触发响应设置为调用所述自动点击确认按钮方法。在此,相关操作与图1所示实施例相同或相近,故不再赘述,在此以引用方式包含于此。
除上述各实施例介绍的方法和设备外,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
图5示出了可被用于实施本申请中所述的各个实施例的示例性系统;
如图5所示在一些实施例中,系统300能够作为各所述实施例中的任意一个设备。在一些实施例中,系统300可包括具有指令的一个或多个计算机可读介质(例如,系统存储器或NVM/存储设备320)以及与该一个或多个计算机可读介质耦合并被配置为执行指令以实现模块从而执行本申请中所述的动作的一个或多个处理器(例如,(一个或多个)处理器305)。
对于一个实施例,系统控制模块310可包括任意适当的接口控制器,以向(一个或多个)处理器305中的至少一个和/或与系统控制模块310通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块310可包括存储器控制器模块330,以向系统存储器315提供接口。存储器控制器模块330可以是硬件模块、软件模块和/或固件模块。
系统存储器315可被用于例如为系统300加载和存储数据和/或指令。对于一个实施例,系统存储器315可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器315可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块310可包括一个或多个输入/输出(I/O)控制器,以向NVM/存储设备320及(一个或多个)通信接口325提供接口。
例如,NVM/存储设备320可被用于存储数据和/或指令。NVM/存储设备320可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备320可包括在物理上作为系统300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备320可通过网络经由(一个或多个)通信接口325进行访问。
(一个或多个)通信接口325可为系统300提供接口以通过一个或多个网络和/或与任意其他适当的设备通信。系统300可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信。
对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器(例如,存储器控制器模块330)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统300可以但不限于是:服务器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统300可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统300包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。
通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个系统传送到另一系统的介质。通信介质可包括有导的传输介质(诸如电缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。调制可以是模拟的、数字的或混合调制技术。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随机存储器(RAM,DRAM,SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PROM,EPROM,EEPROM)、磁性和铁磁/铁电存储器(MRAM,FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机系统使用的计算机可读信息/数据。
在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (12)
1.一种自动安装应用的方法,应用于网络设备,其中,该方法包括:
获得与网络设备连接的用户设备的设备标识信息,根据所述设备标识信息,获得所述用户设备对应的设备对象,其中,所述用户设备上已安装http远程调用服务并已开启开发者调试模式,所述http远程调用服务中包括第一自动化控制服务,所述网络设备已安装第二自动化控制服务,所述第二自动化控制服务用于将所述用户设备上执行的每个操作转换成一个远程请求并发送给所述http远程调用服务,所述http远程调用服务用于接收所述远程请求并调用所述第一自动化控制服务以实现对所述用户设备的自动控制;
获得所述设备对象对应的观察对象,为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,并将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮;
为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,并将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在所述用户设备屏幕上的位置信息自动点击所述第二确认按钮,其中,所述第二确认按钮对应的文本属性为空;
开启所述观察对象,并执行用于在所述用户设备上安装目标应用的调试工具命令,以在所述用户设备上自动安装所述目标应用。
2.根据权利要求1所述的方法,其中,所述为所述观察对象注册关于安装应用过程中的输入密码页面的第一监听事件,包括:
为所述观察对象注册关于所述输入密码页面上的至少一个UI控件对应的至少一个文本属性的第一监听事件,其中,所述至少一个文本属性区别于所述安装应用过程中的其他页面上的UI控件对应的文本属性。
3.根据权利要求2所述的方法,其中,所述方法还包括:
在所述第二自动化控制服务中增加自动输入密码方法,其中,所述自动输入密码方法的输入参数为所述设备对象及所述设备密码;
在所述自动输入密码方法中,调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码;
获得所述第一确认按钮对应的第一控件对象,调用所述第一控件对象的点击方法,以实现自动点击所述第一确认按钮;
其中,所述将所述第一监听事件对应的触发响应设置为在所述输入密码页面中的密码输入框中自动输入所述用户设备对应的设备密码并自动点击所述输入密码页面中的第一确认按钮,包括:
将所述第一监听事件对应的触发响应设置为调用所述自动输入密码方法。
4.根据权利要求3所述的方法,其中,所述调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,包括:
调用所述设备对象的调试工具广播方法将所述设备密码广播出去,以使所述密码输入框对应的第二控件对象接收到所述设备密码,并调用所述第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,其中,所述密码输入框默认拥有所述输入密码页面的焦点。
5.根据权利要求3所述的方法,其中,所述调用所述密码输入框对应的第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码,包括:
根据所述密码输入框在所述输入密码页面中的标识信息,获取所述密码输入框对应的第二控件对象,并调用所述第二控件对象的设置文本方法,以实现在所述密码输入框中自动输入所述设备密码。
6.根据权利要求5所述的方法,其中,所述网络设备已安装UI控件查看服务;
其中,所述方法还包括:
基于所述UI控件查看服务,获取所述密码输入页面对应的UI控件结构树,其中,所述UI控件结构树包括所述密码输入页面上所呈现的多个UI控件及每个UI控件在所述密码输入页面中的定位信息;
根据所述UI控件结构树,确定第二确定按钮在所述输入密码页面中的标识信息。
7.根据权利要求3所述的方法,其中,所述至少一个文本属性包括所述第一确认按钮对应的第一文本属性,且所述第一文本属性在所述第一监听事件中的注册顺序排在所述至少一个文本属性的最后;
其中,所述获得所述第一确认按钮对应的第一控件对象,包括:
通过调用获取与所述第一监听事件中的最后一个注册对象相匹配的控件对象的方法,获得所述第一确认按钮对应的第一控件对象。
8.根据权利要求1所述的方法,其中,所述为所述观察对象注册关于所述安装应用过程中的点击确认页面的第二监听事件,包括:
为所述观察对象注册关于所述点击确认页面上的至少一个UI控件对应的至少一个文本属性的第二监听事件,其中,所述至少一个文本属性区别于所述安装应用过程中的其他页面上的UI控件对应的文本属性。
9.根据权利要求8所述的方法,其中,所述方法还包括:
在第二用户设备自动化操作服务中增加自动点击确认按钮方法,其中,所述自动点击确认按钮的输入参数为所述设备对象及第二确定按钮在用户设备屏幕上的位置信息;
在所自动点击确认按钮方法中,调用所述设备对象的第二点击方法,并向所述第二点击方法传入所述位置信息,以实现自动点击所述第二确认按钮;
其中,所述将所述第二监听事件对应的触发响应设置为根据所述点击确认页面中的第二确认按钮在用户设备屏幕上的位置信息自动点击所述第二确认按钮,包括:
将所述第二监听事件对应的触发响应设置为调用所述自动点击确认按钮方法。
10.一种用于自动安装应用的计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现如权利要求1至9中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至9中任一项所述方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110350757.3A CN113050956B (zh) | 2021-03-31 | 2021-03-31 | 用于自动安装应用的方法、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110350757.3A CN113050956B (zh) | 2021-03-31 | 2021-03-31 | 用于自动安装应用的方法、设备、介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113050956A CN113050956A (zh) | 2021-06-29 |
CN113050956B true CN113050956B (zh) | 2023-07-18 |
Family
ID=76516931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110350757.3A Active CN113050956B (zh) | 2021-03-31 | 2021-03-31 | 用于自动安装应用的方法、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113050956B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100195B1 (en) * | 1999-07-30 | 2006-08-29 | Accenture Llp | Managing user information on an e-commerce system |
KR20160019054A (ko) * | 2014-08-07 | 2016-02-18 | 주식회사 경동원 | Sns를 이용하여 홈 오토메이션 기기를 원격 제어하기 위한 통합관리서버, sns를 이용한 홈 오토메이션 기기 원격 제어 시스템 및 방법 |
CN109976814A (zh) * | 2019-03-12 | 2019-07-05 | 浪潮商用机器有限公司 | 一种搭建lcb服务器的方法、装置和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9143530B2 (en) * | 2011-10-11 | 2015-09-22 | Citrix Systems, Inc. | Secure container for protecting enterprise data on a mobile device |
US10574692B2 (en) * | 2016-05-30 | 2020-02-25 | Christopher Nathan Tyrwhitt Drake | Mutual authentication security system with detection and mitigation of active man-in-the-middle browser attacks, phishing, and malware and other security improvements |
-
2021
- 2021-03-31 CN CN202110350757.3A patent/CN113050956B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100195B1 (en) * | 1999-07-30 | 2006-08-29 | Accenture Llp | Managing user information on an e-commerce system |
KR20160019054A (ko) * | 2014-08-07 | 2016-02-18 | 주식회사 경동원 | Sns를 이용하여 홈 오토메이션 기기를 원격 제어하기 위한 통합관리서버, sns를 이용한 홈 오토메이션 기기 원격 제어 시스템 및 방법 |
CN109976814A (zh) * | 2019-03-12 | 2019-07-05 | 浪潮商用机器有限公司 | 一种搭建lcb服务器的方法、装置和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113050956A (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874174B (zh) | 接口测试及功能测试的实现方法和装置 | |
US9235398B2 (en) | Development of platform independent applications | |
US10698797B2 (en) | Mobile application program testing method, server, terminal, and storage medium | |
CN109308263B (zh) | 一种小程序测试方法、装置及设备 | |
US9158520B2 (en) | Development of platform independent applications | |
CN110290557B (zh) | 一种加载应用内页面标签的方法与设备 | |
CN110321189B (zh) | 一种在宿主程序中呈现寄宿程序的方法与设备 | |
CN110333955B (zh) | 一种管理应用中消息通知的方法与设备 | |
US20230214243A1 (en) | One-machine multi-control method, apparatus, system and electronic device | |
CN110430253B (zh) | 一种提供小说更新通知信息的方法与设备 | |
CN110286920B (zh) | 一种安装应用的方法与设备 | |
CN114168460A (zh) | 混合开发中前端代码的远程调试方法、设备及存储介质 | |
TW202113769A (zh) | 一種機器設備的控制方法及裝置、儲存介質 | |
CN106557411B (zh) | Android系统中Hybrid应用的测试方法及系统 | |
CN114661594A (zh) | 一种用于自动化测试的方法、设备、介质及程序产品 | |
CN112395098A (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN113050956B (zh) | 用于自动安装应用的方法、设备、介质及程序产品 | |
CN109388917B (zh) | 硬件设备的鉴权方法、装置、设备及存储介质 | |
CN111325574A (zh) | 一种用于提供呈现信息的方法与设备 | |
CN115309657A (zh) | 一种用于提供测试用例的方法、设备、介质及程序产品 | |
CN113296911B (zh) | 集群调用方法、集群调用装置、电子设备及可读存储介质 | |
CN112272213B (zh) | 一种活动报名方法与设备 | |
CN110333914B (zh) | 一种用于执行目标操作的方法与设备 | |
CN115185599A (zh) | 基于Golang的项目部署方法、系统及存储介质 | |
CN116149639A (zh) | 一种组件开发的方法、装置、电子设备和存储介质 |
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 |