CN108959062B - 网页元素获取方法及装置 - Google Patents
网页元素获取方法及装置 Download PDFInfo
- Publication number
- CN108959062B CN108959062B CN201710363817.9A CN201710363817A CN108959062B CN 108959062 B CN108959062 B CN 108959062B CN 201710363817 A CN201710363817 A CN 201710363817A CN 108959062 B CN108959062 B CN 108959062B
- Authority
- CN
- China
- Prior art keywords
- web page
- target
- plug
- main process
- program
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种网页元素获取方法及装置,属于自动化测试领域。该方法包括主进程代理接收测试应用程序发送的获取命令,根据获取命令,通过通信通道从子进程代理中获取目标网页元素,主进程代理将获取到的目标网页元素回传至测试应用程序。由于主进程代理是设置在被测应用程序的主进程中的进程代理,子进程代理是设置在被测应用程序的子进程中的进程代理,本发明通过建立主进程代理与子进程代理之间的通信通道使得进程间能够相互通信,即主进程能够通过主进程代理从子进程代理中获取到子进程中的目标网页元素,从而测试应用程序能够接收到主进程代理发送的目标网页元素,进而实现自动化测试。
Description
技术领域
本发明实施例涉及自动化测试领域,特别涉及一种网页元素获取方法及装置。
背景技术
网页(World Wide Web,Web)自动化测试的任务通常是获取网页元素(英文:WebElement),并将该Web元素封装成网页元素对象,然后模拟人工测试步骤对该网页元素对象进行操作。
目前,安卓终端(即具有安卓操作***的终端)支持Web自动化测试的方式一般采用Instrumentation测试框架注入方式,下面均以测试应用程序和被测应用程序运行在同一个终端上举例说明。如图1所示,测试应用程序100获取被测应用程序110的目标网页元素112的获取方法为:测试应用程序100将RobotiumWeb.js文件102中的javascript(简称:js)脚本注入到被测应用程序110的主进程114后,被测应用程序110执行该js脚本从主进程114中获取目标网页视图(英文:Target WebView)116,再从该目标网页视图116中提取目标网页元素112,并将提取出的目标网页元素112发送至测试应用程序100,使得测试应用程序100通过对获取到该目标网页元素112进行解析并封装成目标网页元素对象104。
在上述的Web自动化测试中,测试应用程序100只能测试被测应用程序110的主进程114。如图2所示,若被测应用程序110将与执行js脚本以及获取目标网页视图116有关的逻辑独立为Web子进程118,该Web子进程118与主进程不共享资源即两个进程之间相互独立。由于主进程114中不存在目标网页视图116,主进程114也无法获取子进程118中的目标网页视图116,因此测试应用程序100将RobotiumWeb.js脚本102注入到主进程114后,无法从被测应用程序110的主进程114中获取目标网页元素,导致自动化测试无法完成。
发明内容
为了解决相关技术中被测应用程序将Web页面有关的逻辑放到子进程实现后,目前的测试框架无法支持的问题,本发明实施例提供了一种网页元素获取方法及装置。所述技术方案如下:
第一方面,提供了一种网页元素获取方法,所述方法包括:
主进程代理接收测试应用程序发送的获取命令,所述主进程代理是设置在被测应用程序的主进程中的进程代理,所述获取命令用于指示所述被测应用程序获取目标Web页面的目标网页元素;
所述主进程代理根据所述获取命令,通过通信通道从子进程代理中获取所述目标网页元素,所述子进程代理是设置在所述被测应用程序的子进程中的进程代理,所述通信通道是根据进程间通信IPC机制建立的所述主进程代理与所述子进程代理之间的通信通道;
所述主进程代理将获取到的所述目标网页元素回传至所述测试应用程序。
第二方面,提供了一种网页元素获取装置,所述装置包括:
接收模块,用于主进程代理接收测试应用程序发送的获取命令,所述主进程代理是设置在被测应用程序的主进程中的进程代理,所述获取命令用于指示所述被测应用程序获取目标Web页面的目标网页元素;
获取模块,用于所述主进程代理根据所述获取命令,通过通信通道从子进程代理中获取所述目标网页元素,所述子进程代理是设置在所述被测应用程序的子进程中的进程代理,所述通信通道是根据进程间通信IPC机制建立的所述主进程代理与所述子进程代理之间的通信通道;
回传模块,用于所述主进程代理将获取到的所述目标网页元素回传至所述测试应用程序。
第三方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至7任一所述的网页元素获取方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至7任一所述的网页元素获取方法。
本发明实施例提供的技术方案带来的有益效果是:
由于主进程中设置有一个主进程代理,子进程中设置有一个子进程代理,本实施例通过主进程代理接收测试应用程序发送的获取命令,根据获取命令通过通信通道从子进程代理中获取目标网页元素,将获取到的目标网页元素回传至测试应用程序;使得主进程和子进程通过各自的进程代理能够进行进程间的通信,主进程能够通过主进程代理从子进程代理中获取到子进程中的目标网页元素,从而测试应用程序能够接收到主进程代理发送的目标网页元素,进而使得测试应用程序可以根据封装后的目标网页元素对象对该被测应用程序进行自动化测试。
附图说明
图1是相关技术中一种网页元素获取方法所涉及的实施环境的结构示意图;
图2是相关技术中另一种网页元素获取方法所涉及的实施环境的结构示意图;
图3是本发明实施例提供的网页元素获取方法所涉及的实施环境的结构示意图;
图4是本发明一个实施例提供的网页元素获取方法的流程图;
图5是本发明另一个实施例提供的网页元素获取方法的流程图;
图6是本发明实施例提供的网页元素获取方法的原理示意图;
图7是本发明一个实施例提供的网页元素获取装置的结构图;
图8是本发明另一个实施例提供的网页元素获取装置的结构图;
图9是本发明一个实施例提供的终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图3,其示出了本发明实施例提供的网页元素获取方法所涉及的终端的结构示意图。该终端中运行有客户端,包括:测试应用程序310和被测应用程序320。
测试应用程序310是指自动化测试代码所在的应用程序。测试应用程序310向被测应用程序320发送获取命令,该获取命令用于指示被测应用程序320获取目标Web页面的目标网页元素325。可选的,测试应用程序310通过远程调用浏览器代码RemoteWebUtils311向被测应用程序320发送获取命令。
被测应用程序320是指具有浏览网页能力的应用程序,该被测应用程序可以是具有浏览网页能力的社交平台的应用程序、即时通信应用程序、购物应用程序和支付应用程序等。比如,测试应用程序310需要测试的项目为应用A,则被测应用程序320为应用A对应的安卓版应用程序。
被测应用程序320包括主进程321和子进程322,主进程321是指被测应用程序320中负责资源管理和/或***交互的进程,子进程322也称Web进程,是指负责与Web页面相关任务的进程;可选的,子进程322用于执行js脚本以及获取目标Web页面的目标网页视图。
可选的,每一个进程都有它自己的地址空间,主进程和子进程相互独立,不共享各自的地址空间。示意性的,每一个进程包括文本区域(text region)、数据区域(dataregion)和堆栈(stack region)中的至少一种,其中,文本区域存储处理器执行的代码,数据区域存储变量和进程执行期间使用的动态分配的内存,而堆栈区域存储着活动过程调用的指令和本地变量。
出于安全的考虑,通常将与Web页面有关的进程置入沙箱之中,以限制Javascript代码只能在沙箱中运行,从而提高浏览器的安全性。因此,在相关技术中,由于该沙盒机制的存在,主进程无法调用接口操作子进程中的资源,以获取子进程中的目标网页元素325。
为了解决上述问题,在本实施例中,主进程321中设置有一个主进程代理323,子进程322设置有一个子进程代理324,主进程代理323与子进程代理324之间建立通信通道,该通信通道是根据进程间通信IPC机制建立的通信通道,使得主进程321与子进程322通过各自的进程代理能够相互通信。示意性的,主进程代理是设置在主进程中的一个函数方法,子进程代理是设置在子进程中的一个函数方法。
可选的,IPC机制主要用于进程之间的通信,消息的类型也有很多种,根据IPC机制建立的通信通道用于主进程代理与子代理之间的通信,本实施例对具体的通过通信通道传输的消息格式则不做过多说明。
可选的,测试应用程序310通过RemoteWebUtils311向被测应用程序320的主进程代理323发送获取命令,主进程代理323根据获取命令,通过通信通道从子进程代理324中获取目标网页元素325,并向测试应用程序310返回该目标网页元素325。
可选的,终端可以是手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
请参考图4,其示出了本发明一个实施例提供的网页元素获取方法的流程图。本实施例以该网页元素获取方法应用于图3所示出的实施环境来举例说明。该网页元素获取方法包括:
步骤401,主进程代理接收测试应用程序发送的获取命令。
测试应用程向被测应用程序中的主进程代理发送获取命令,该获取命令用于指示被测应用程序获取目标Web页面的目标网页元素;对应的,主进程代理接收该获取命令;示意性的,获取命令为command(简称:cmd)命令。
可选的,该获取命令携带有操作标识,该操作标识用于指示被测应用程序获取的内容类型。一种可能的实施方式中,以操作列表的方式存储操作标识与内容类型的对应关系,该操作列表如表一所示。在该操作列表中,操作标识“01”对应的内容类型为Web页面的“网页元素”,操作标识“02”对应的内容类型为Web页面的“统一资源定位符(UniformResource Locator,URL)链接”,操作标识“03”对应的内容类型为Web页面的“网页标题”。
表一
操作标识 | 内容类型 |
01 | 网页元素 |
02 | URL链接 |
03 | 网页标题 |
比如,当测试应用程向主进程代理发送的获取命令携带有操作标识“01”,则主进程代理在表一种查询到与操作标识“01”对应的内容类型为Web页面的“网页元素”,则主进程代理确定需要获取的内容为目标Web页面的目标网页元素。
步骤402,主进程代理根据获取命令,通过通信通道从子进程代理中获取目标网页元素。
可选的,主进程代理将接收到的cmd命令通过通信通道转发至子进程代理,子进程代理根据该cmd命令获取子进程中的目标网页视图,并从该目标网页视图中提取目标网页元素,再通过通信通道向主进程代理返回目标网页元素,主进程代理接收该目标网页元素。
其中,目标网页视图也称目标WebView,是用于加载显示目标Web页面的控件。目标网页元素也称目标Web元素,是从目标网页视图中提取出的网页元素。
步骤403,主进程代理将获取到的目标网页元素回传至测试应用程序。
可选的,目标网页元素为目标网页页面中的若干个网页元素,包括目标网页页面中的表单、单选钮、复选框、列表框、输入框、密码框、文本框和图片中的至少一种。
可选的,主进程代理接收到子进程代理发送的目标网页元素后,向测试应用程序返回该目标网页元素,对应的,测试应用程序接收到该目标网页元素,并对该目标网页元素进行解析,并封装成目标网页元素对象。
综上所述,由于主进程中设置有一个主进程代理,子进程中设置有一个子进程代理,本实施例通过主进程代理接收测试应用程序发送的获取命令,根据获取命令通过通信通道从子进程代理中获取目标网页元素,将获取到的目标网页元素回传至测试应用程序;使得主进程和子进程通过各自的进程代理能够进行进程间的通信,主进程能够通过主进程代理从子进程代理中获取到子进程中的目标网页元素,从而测试应用程序能够接收到主进程代理发送的目标网页元素,进而使得测试应用程序可以根据封装后的目标网页元素对象对该被测应用程序进行自动化测试。
请参考图5,其示出了本发明一个实施例提供的网页元素获取方法的流程图。本实施例以该网页元素获取方法应用于图1所示出的实施环境来举例说明。该网页元素获取方法包括:
步骤501,测试应用程向被测应用程序中的主进程代理发送获取命令。
步骤502,主进程代理接收测试应用程序发送的获取命令。
步骤503,主进程代理将获取命令通过通信通道发送至子进程代理。
可选的,主进程代理通过通信通道向子进程代理发送cmd命令,子进程代理接收到该cmd命令。
由于支持Web自动化测试的代码(包括执行js脚本以及获取目标网页视图有关的逻辑)属于测试代码,如果在被测应用程序发布时,该测试代码随着该被测应用程序一起对外发布,这样不仅会增加被测应用程序的安装包大小,而且存在由于测试代码的外发而导致的安全风险。因此,在本实施例中,将支持Web自动化测试的代码以插件程序的方式实现,被测应用程序发布时不发布该插件程序,该插件程序是在Web自动化测试时用于支持Web自动化测试的程序,使得被测应用程序中只需增加主进程代理和子进程代理相关的代码,在几乎不增加被测应用程序的安装包大小的同时,使得安全风险可控。
可选的,主进程代理通过通信通道向子进程代理发送cmd命令,子进程代理接收到该cmd命令。在子进程代理接收到cmd命令后,检测终端中是否安装有插件程序,若已经安装则执行步骤506,若检测到未安装插件程序则执行步骤504。
步骤504,当检测到未安装插件程序时,根据指定目录中插件安装包安装插件程序。
可选的,采用安卓工程进程开发,最后编译生成插件安装包,该插件安装包存储在终端的指定目录中。当检测到未安装插件程序时,在指定目录中查找到插件安装包,并根据该插件安装包安装插件程序。
步骤505,将插件程序的默认类加载器设置为第三方类加载器。
由于当目标Web页面对应的浏览器内核为第三方定义的内核时,插件程序的默认类加载器不支持第三方定义的网页视图对应的自动化测试。因此,为了插件程序能够支持上述情况,将插件程序的默认类加载器设置为第三方类加载器,该第三方类加载器是第三方软件开发工具包SDK提供的基于默认类加载器扩展的类加载器,第三方SDK是集成在目标Web页面中的SDK。
步骤506,子进程代理将获取命令转发至插件程序。
可选的,子进程代理根据获取命令,调用插件程序获取目标网页元素,该插件程序是运行在子进程中的插件程序。
步骤507,插件程序根据获取命令获取目标网页视图,并从目标网页视图中提取目标网页元素。
由于目标Web页面对应的浏览器内核为操作***提供的内核或者第三方定义的内核,因此,插件程序根据从目标网页视图中提取目标网页元素的过程包括但不限于以下两种实现方法。
在一种可能的实现方法中,当目标Web页面对应的浏览器内核为操作***提供的内核时,插件程序根据获取命令获取第一网页视图,对第一网页视图执行第一js脚本得到目标网页元素,该第一js脚本用于从第一网页视图中提取目标网页元素;其中,第一网页视图是操作***提供的默认的网页视图。
可选的,以目标网页页面为HTML页面为例进行说明,子进程通过第一接口调用第一js脚本,解析出HTML页面中的所有的Web元素,至少一个Web元素以JSON(JavaScriptObject Notation,JS对象标记)格式的字符串进行存储,然后至少一个Web元素会通过该第一接口中的回调方法传递给子进程。
可选的,插件程序提取到的目标网页元素包括若干个网页元素,是以json数组形式进行存储,该json数组中的每个元素对应于一个网页元素,本实施例对目标网页元素的存储的数据结构形式不加以限定。
在另一种可能的实现方法中,当目标Web页面对应的浏览器内核为第三方定义的内核时,插件程序根据获取命令获取第三方定义的第二网页视图,对第二网页视图执行第二js脚本得到目标网页元素,第二js脚本用于从第二网页视图中提取目标网页元素;其中,第二网页视图是第三方定义的网页视图。相关细节可参考第一种可能的实现方法,在此不再赘述。
步骤508,插件程序将提取出的目标网页元素回传至子进程代理。
可选的,插件程序将提取出的目标网页元素以预设格式的字符串形式回传至子进程代理;示意性的,预设格式为JSON格式。
步骤509,子进程代理接收插件程序回传的目标网页元素。
步骤510,子进程代理将获取到的目标网页元素通过通信通道回传至主进程代理。
可选的,子进程代理将获取到的目标网页元素以预设格式的字符串形式回传至主进程代理。
步骤511,主进程代理接收子进程代理回传的目标网页元素。
步骤512,主进程代理将获取到的目标网页元素以预设格式的字符串形式回传至测试应用程序,预设格式是指预设的测试应用程序可以解析的格式。
步骤513,测试应用程序接收到主进程代理发送的目标网页元素。
步骤514,测试应用程序对目标网页元素进行解析并封装成目标网页元素对象。
可选的,目标网页元素对象包括目标网页元素的文本信息、属性信息和坐标信息等,属性信息包括:目标网页元素对象的基本属性、目标网页元素对象的自定义属性、目标网页元素对象在文档中的路径信息中的至少一种。其中,目标网页元素对象的基本属性包括标识Id、名称Name、类别Class、层叠样式表单Css和值Value等;目标网页元素对象的自定义属性为第三方自定义的“键-值”,“键”是与基本属性名称不相同的由第三方自定义的;目标网页元素对象在文档中的路径信息为可扩展标记语言路径Xpath信息。
在一个示意性的例子中,如图6所示,测试应用程序610通过RemoteWebUtils611向被测应用程序620的主进程621中的主进程代理622发送cmd命令,主进程代理622通过IPC向子进程623中的子进程代理624发送cmd命令,子进程代理624向插件程序625转发该cmd命令,插件程序625根据该cmd命令执行js脚本,从获取的目标网页视图626中提取目标网页元素,并以JSON数组形式存储,并将JSON数组作为返回值,向子进程代理624回传该返回值,子进程代理624通过IPC传输该返回值至主进程代理622,主进程代理622在获取该返回值之后,将该返回值发送至测试应用程序610,对应的,测试应用程序610对该返回值进程解析,得到目标网页元素,将目标网页元素封装成对应的目标网页元素对象。
综上所述,由于主进程中设置有一个主进程代理,子进程中设置有一个子进程代理,本实施例通过主进程代理接收测试应用程序发送的获取命令,根据获取命令通过通信通道从子进程代理中获取目标网页元素,将获取到的目标网页元素回传至测试应用程序;使得主进程和子进程通过各自的进程代理能够进行进程间的通信,主进程能够通过主进程代理从子进程代理中获取到子进程中的目标网页元素,从而测试应用程序能够接收到主进程代理发送的目标网页元素,进而使得测试应用程序可以根据封装后的目标网页元素对象对该被测应用程序进行自动化测试。
本实施例还通过将支持Web自动化测试的代码以插件程序的方式实现,被测应用程序发布时不发布该插件程序,使得被测应用程序中只需增加主进程代理和子进程代理相关的代码,在几乎不增加被测应用程序的安装包大小的同时,使得安全风险可控。
本实施例还通过当检测到未安装插件程序时,根据指定目录中插件安装包安装插件程序,并将插件程序的默认类加载器设置为第三方类加载器,使得当目标Web页面对应的浏览器内核为第三方定义的内核时,插件程序的类加载器能够支持对应的自动化测试,大大提高了被测应用程序对不同的浏览器内核的自动化测试的覆盖度。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图7,其示出了本发明一个实施例提供的网页元素获取装置的结构示意图。该网页元素获取装置可以通过专用硬件电路,或者,软硬件的结合实现成为图3中的终端的全部或一部分,该网页元素获取装置包括:接收模块710、获取模块720和回传模块730。
接收模块710,用于实现上述步骤401或步骤502。
获取模块720,用于实现上述步骤402。
回传模块730,用于实现上述步骤403。
在基于图7所示实施例提供的一个可选实施例中,如图8所示,该获取模块720,包括:发送单元721、调用单元722、回传单元723和接收单元724。
发送单元721,用于实现上述步骤503。
调用单元722,用于子进程代理根据获取命令,调用插件程序获取目标网页元素,插件程序是运行在子进程中的插件程序。
回传单元723,用于实现上述步骤510。
接收单元724,用于实现上述步骤511。
在基于图7所示实施例提供的一个可选实施例中,如图8所示,该调用单元722,包括:转发子单元722a、提取子单元722b、回传子单元722c和接收子单元722d。
转发子单元722a,用于实现上述步骤506。
获取子单元722b,用于实现上述步骤507。
回传子单元722c,用于实现上述步骤508。
接收子单元722d,用于实现上述步骤509。
可选的,当目标Web页面对应的浏览器内核为操作***提供的内核时,提取子单元,还用于插件程序根据获取命令获取第一网页视图,对第一网页视图执行第一js脚本得到目标网页元素,第一js脚本用于从第一网页视图中提取目标网页元素。
可选的,当目标Web页面对应的浏览器内核为第三方定义的内核时,提取子单元,还用于插件程序根据获取命令获取第三方定义的第二网页视图,对第二网页视图执行第二js脚本得到目标网页元素,第二js脚本用于从第二网页视图中提取目标网页元素。
在基于图7所示实施例提供的一个可选实施例中,如图8所示,该装置,还包括:安装模块740和设置模块750。
安装模块740,用于实现上述步骤504。
设置模块750,用于实现上述步骤505。
在基于图7所示实施例提供的一个可选实施例中,如图8所示,该回传模块730,还用于实现上述步骤512。
相关细节可结合参考图3至图6所示的方法实施例。其中,接收模块710还用于实现上述方法实施例中其他任意隐含或公开的与接收步骤相关的功能;获取模块720还用于实现上述方法实施例中其他任意隐含或公开的与获取步骤相关的功能;回传模块730还用于实现上述方法实施例中其他任意隐含或公开的与回传步骤相关的功能;安装模块740还用于实现上述方法实施例中其他任意隐含或公开的与安装步骤相关的功能;设置模块750还用于实现上述方法实施例中其他任意隐含或公开的与设置步骤相关的功能。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图9,其示出了本发明一个实施例提供的终端900的框图,该终端900可以包括RF(Radio Frequency,射频)电路910、包括有一个或一个以上计算机可读存储介质的存储器920、输入单元930、显示单元940、传感器950、音频电路960、WiFi(wireless fidelity,无线保真)模块970、包括有一个或者一个以上处理核心的处理器980、以及电源990等部件。本领域技术人员可以理解,图9中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路910可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器980处理;另外,将涉及上行的数据发送给基站。通常,RF电路910包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路910还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。存储器920可用于存储软件程序以及模块。处理器980通过运行存储在存储器920的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端900的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器920还可以包括存储器控制器,以提供处理器980和输入单元930对存储器920的访问。
输入单元930可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元930可包括触敏表面931以及其他输入设备932。触敏表面931,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面931上或在触敏表面931附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面931。除了触敏表面931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及设备90的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元940可包括显示面板941,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板941。进一步的,触敏表面931可覆盖在显示面板941之上,当触敏表面931检测到在其上或附近的触摸操作后,传送给处理器980以确定触摸事件的类型,随后处理器980根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图9中,触敏表面931与显示面板941是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面931与显示面板941集成而实现输入和输出功能。
终端900还可包括至少一种传感器950,比如光传感器、运动传感器以及其它传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在终端900移动到耳边时,关闭显示面板941和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端900还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其它传感器,在此不再赘述。
音频电路960、扬声器921,传声器922可提供用户与终端900之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器921,由扬声器921转换为声音信号输出;另一方面,传声器922将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910以发送给另一设备,或者将音频数据输出至存储器920以便进一步处理。音频电路960还可能包括耳塞插孔,以提供外设耳机与终端900的通信。
WiFi属于短距离无线传输技术,终端900通过WiFi模块970可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块970,但是可以理解的是,其并不属于终端900的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器980是终端900的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行终端900的各种功能和处理数据,从而对设备进行整体监控。可选的,处理器980可包括一个或多个处理核心;可选的,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器980中。
终端900还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理***与处理器980逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源990还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端900还可以包括摄像头、蓝牙模块等,在此不再赘述。
终端900还包括存储器,该存储器中存储有至少一条指令,该指令由处理器加载并执行以实现上述各个方法实施例提供的网页元素获取方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的网页元素获取方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现上述的网页元素获取方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种网页元素获取方法,其特征在于,所述方法包括:
主进程代理接收测试应用程序发送的获取命令,所述主进程代理是设置在被测应用程序的主进程中的进程代理,所述获取命令用于指示所述被测应用程序获取目标Web页面的目标网页元素,所述被测应用包括主进程和子进程,所述主进程用于指示所述被测应用程序中负责资源管理和/或***交互的进程,所述子进程用于指示负责与Web页面相关任务的进程,其中,所述主进程与所述子进程相互独立;
所述主进程代理将所述获取命令通过通信通道发送至子进程代理,所述子进程代理是设置在所述被测应用程序的子进程中的进程代理,所述通信通道是根据进程间通信IPC机制建立的所述主进程代理与所述子进程代理之间的通信通道;
所述子进程代理根据所述获取命令,调用插件程序获取所述目标网页元素,所述插件程序是运行在所述子进程中的插件程序;
所述子进程代理将获取到的所述目标网页元素通过所述通信通道回传至所述主进程代理;
所述主进程代理接收所述子进程代理回传的所述目标网页元素;
所述主进程代理将获取到的所述目标网页元素回传至所述测试应用程序。
2.根据权利要求1所述的方法,其特征在于,所述子进程代理根据所述获取命令,调用插件程序获取所述目标网页元素,包括:
所述子进程代理将所述获取命令转发至所述插件程序;
所述插件程序根据所述获取命令获取目标网页视图,并从所述目标网页视图中提取所述目标网页元素,所述目标网页视图是用于加载显示所述目标Web页面的控件;
所述插件程序将提取出的所述目标网页元素回传至所述子进程代理;
所述子进程代理接收所述插件程序回传的所述目标网页元素。
3.根据权利要求2所述的方法,其特征在于,当所述目标Web页面对应的浏览器内核为操作***提供的内核时,所述插件程序根据所述获取命令获取目标网页视图,并从所述目标网页视图中提取所述目标网页元素,包括:
所述插件程序根据所述获取命令获取第一网页视图,对所述第一网页视图执行第一js脚本得到所述目标网页元素,所述第一js脚本用于从所述第一网页视图中提取所述目标网页元素。
4.根据权利要求2所述的方法,其特征在于,当所述目标Web页面对应的浏览器内核为第三方定义的内核时,所述插件程序根据所述获取命令获取目标网页视图,并从所述目标网页视图中提取所述目标网页元素,包括:
所述插件程序根据所述获取命令获取第三方定义的第二网页视图,对所述第二网页视图执行第二js脚本得到所述目标网页元素,所述第二js脚本用于从所述第二网页视图中提取所述目标网页元素。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法,还包括:
当检测到未安装所述插件程序时,根据指定目录中插件安装包安装所述插件程序;
将所述插件程序的默认类加载器设置为第三方类加载器,所述第三方类加载器是第三方软件开发工具包SDK提供的基于所述默认类加载器扩展的类加载器,所述第三方SDK是集成在所述目标Web页面中的SDK。
6.根据权利要求1至4任一所述的方法,其特征在于,所述主进程代理将获取到的所述目标网页元素回传至所述测试应用程序,包括:
所述主进程代理将获取到的目标网页元素以预设格式的字符串形式回传至所述测试应用程序,所述预设格式是指预设的所述测试应用程序可以解析的格式。
7.一种网页元素获取装置,其特征在于,所述装置包括:
接收模块,用于主进程代理接收测试应用程序发送的获取命令,所述主进程代理是设置在被测应用程序的主进程中的进程代理,所述获取命令用于指示所述被测应用程序获取目标Web页面的目标网页元素,所述被测应用包括主进程和子进程,所述主进程用于指示所述被测应用程序中负责资源管理和/或***交互的进程,所述子进程用于指示负责与Web页面相关任务的进程,其中,所述主进程与所述子进程相互独立;
获取模块,包括:发送单元、调用单元、回传单元和接收单元;
所述发送单元,用于所述主进程代理将所述获取命令通过通信通道发送至子进程代理,所述子进程代理是设置在所述被测应用程序的子进程中的进程代理,所述通信通道是根据进程间通信IPC机制建立的所述主进程代理与所述子进程代理之间的通信通道;
所述调用单元,用于所述子进程代理根据所述获取命令,调用插件程序获取所述目标网页元素,所述插件程序是运行在所述子进程中的插件程序;
所述回传单元,用于所述子进程代理将获取到的所述目标网页元素通过所述通信通道回传至所述主进程代理;
所述接收单元,用于所述主进程代理接收所述子进程代理回传的所述目标网页元素;
回传模块,用于所述主进程代理将获取到的所述目标网页元素回传至所述测试应用程序。
8.根据权利要求7所述的装置,其特征在于,所述调用单元,包括:
转发子单元、提取子单元、回传子单元和接收子单元;
所述转发子单元,用于所述子进程代理将所述获取命令转发至所述插件程序;
所述提取子单元,用于所述插件程序根据所述获取命令获取目标网页视图,并从所述目标网页视图中提取所述目标网页元素,所述目标网页视图是用于加载显示所述目标Web页面的控件;
所述回传子单元,用于所述插件程序将提取出的所述目标网页元素回传至所述子进程代理;
所述接收子单元,用于所述子进程代理接收所述插件程序回传的所述目标网页元素。
9.根据权利要求8所述的装置,其特征在于,当所述目标Web页面对应的浏览器内核为操作***提供的内核时,所述提取子单元,还用于所述插件程序根据所述获取命令获取第一网页视图,对所述第一网页视图执行第一js脚本得到所述目标网页元素,所述第一js脚本用于从所述第一网页视图中提取所述目标网页元素。
10.根据权利要求8所述的装置,其特征在于,当所述目标Web页面对应的浏览器内核为第三方定义的内核时,所述提取子单元,还用于所述插件程序根据所述获取命令获取第三方定义的第二网页视图,对所述第二网页视图执行第二js脚本得到所述目标网页元素,所述第二js脚本用于从所述第二网页视图中提取所述目标网页元素。
11.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至6任一所述的网页元素获取方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至6任一所述的网页元素获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710363817.9A CN108959062B (zh) | 2017-05-22 | 2017-05-22 | 网页元素获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710363817.9A CN108959062B (zh) | 2017-05-22 | 2017-05-22 | 网页元素获取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108959062A CN108959062A (zh) | 2018-12-07 |
CN108959062B true CN108959062B (zh) | 2021-06-18 |
Family
ID=64461688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710363817.9A Active CN108959062B (zh) | 2017-05-22 | 2017-05-22 | 网页元素获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959062B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381903B (zh) * | 2020-03-18 | 2023-05-26 | 支付宝(杭州)信息技术有限公司 | 程序运行方法、装置、设备及介质 |
CN112149033B (zh) * | 2020-09-14 | 2024-07-16 | 京东科技控股股份有限公司 | H5页面控件的获取方法、装置、电子设备和存储介质 |
CN114020490A (zh) * | 2021-08-30 | 2022-02-08 | 统信软件技术有限公司 | 一种进程间通信***、方法及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982068A (zh) * | 2012-10-25 | 2013-03-20 | 北京奇虎科技有限公司 | 一种显示推荐数据的方法和相应的浏览器 |
CN102999613A (zh) * | 2012-11-28 | 2013-03-27 | 北京奇虎科技有限公司 | 一种在浏览器中加载工具类窗口的方法及其装置 |
CN104639534A (zh) * | 2014-12-30 | 2015-05-20 | 北京奇虎科技有限公司 | 网站安全信息的加载方法和浏览器装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9351193B2 (en) * | 2009-01-28 | 2016-05-24 | Headwater Partners I Llc | Intermediate networking devices |
US8682083B2 (en) * | 2011-06-30 | 2014-03-25 | American Express Travel Related Services Company, Inc. | Method and system for webpage regression testing |
CN105138448B (zh) * | 2014-06-05 | 2018-06-05 | 北京畅游天下网络技术有限公司 | 一种在前端测试页面的方法和装置 |
CN104360936B (zh) * | 2014-10-17 | 2017-02-15 | 中国人民解放军国防科学技术大学 | 一种基于触发操作的Barrier操作性能分析方法 |
US20160239880A1 (en) * | 2015-02-17 | 2016-08-18 | Pagefair Limited | Web advertising protection system |
CN105867984B (zh) * | 2016-04-22 | 2017-09-05 | 广州阿里巴巴文学信息技术有限公司 | 在网页中显示任务状态的方法、装置、客户端和移动设备 |
CN106095669B (zh) * | 2016-06-03 | 2020-09-25 | 中国矿业大学 | 基于调度序列约简的并行程序测试方法 |
-
2017
- 2017-05-22 CN CN201710363817.9A patent/CN108959062B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982068A (zh) * | 2012-10-25 | 2013-03-20 | 北京奇虎科技有限公司 | 一种显示推荐数据的方法和相应的浏览器 |
CN102999613A (zh) * | 2012-11-28 | 2013-03-27 | 北京奇虎科技有限公司 | 一种在浏览器中加载工具类窗口的方法及其装置 |
CN104639534A (zh) * | 2014-12-30 | 2015-05-20 | 北京奇虎科技有限公司 | 网站安全信息的加载方法和浏览器装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108959062A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9800609B2 (en) | Method, device and system for detecting malware in a mobile terminal | |
US10853437B2 (en) | Method and apparatus for invoking application programming interface | |
CN107040609B (zh) | 一种网络请求处理方法和装置 | |
CN108536594B (zh) | 页面测试方法、装置及存储设备 | |
CN109857403B (zh) | 一种页面更新、页面处理方法及装置 | |
WO2017008551A1 (zh) | 弹幕显示方法及装置 | |
WO2015096747A1 (zh) | 操作响应方法、客户端、浏览器及*** | |
CN108039963B (zh) | 一种容器配置方法、装置及存储介质 | |
CN107329901B (zh) | 数据包抓取方法、终端、服务器和存储介质 | |
CN104123276B (zh) | 一种浏览器中弹窗的拦截方法、装置和*** | |
CN106547844B (zh) | 一种用户界面的处理方法和装置 | |
CN105975190B (zh) | 一种图形界面的处理方法、装置及*** | |
CN110020293B (zh) | 多媒体数据展示方法、装置及存储介质 | |
CN104252356A (zh) | 生成界面的方法和*** | |
CN108959062B (zh) | 网页元素获取方法及装置 | |
EP2869604B1 (en) | Method, apparatus and device for processing a mobile terminal resource | |
US9582584B2 (en) | Method, apparatus and system for filtering data of web page | |
CN112749074B (zh) | 一种测试用例推荐方法以及装置 | |
CN108182090B (zh) | 基于blink内核的Flash插件加载方法及装置 | |
CN105631059B (zh) | 数据处理方法、数据处理装置及数据处理*** | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
CN110020338B (zh) | 浏览器、网页打开方法及设备 | |
CN105278942B (zh) | 组件管理方法及装置 | |
CN111562910A (zh) | 一种封装方法及相关设备 | |
CN109145182B (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 |