2024年6月15日发(作者:)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.8
(22)申请日 2012.03.29
(71)申请人 奇智软件(北京)有限公司
地址 100016 北京市朝阳区酒仙桥路14号兆维大厦4层东侧单元
(72)发明人 赵鹏 任寰
(74)专利代理机构 北京润泽恒知识产权代理有限公司
代理人 苏培华
(51)
G06F11/36
G06F17/30
(10)申请公布号 CN 102662837 A
(43)申请公布日 2012.09.12
权利要求说明书 说明书 幅图
(54)发明名称
一种浏览器的测试方法和系统
(57)摘要
本发明提供了一种浏览器的测试方
法和系统,所述浏览器至少包括第一内核
和第二内核,其中的方法具体包括:加载
当前浏览器页面;识别当前浏览器页面的
内核;依据当前浏览器页面的内核,获取
相应的文档对象;依据当前浏览器页面的
文档对象模拟用户的操作。本发明能够高
效便捷地对双核、多核等浏览器进行测
试。
法律状态
法律状态公告日
2022-08-05
法律状态信息
专利权的转移IPC(主分
类):G06F11/36专利
号:ZL2登记生效
日:20220725变更事项:专利权人
变更前权利人:北京奇虎科技有限
公司变更后权利人:北京奇虎科技
有限公司变更事项:地址变更前权
利人:100088 北京市西城区新街
口外大街28号D座112室(德胜
园区)变更后权利人:100015 北京
市朝阳区酒仙桥路6号院2号楼
1至19层104号内8层801变更
事项:专利权人变更前权利人:奇
智软件(北京)有限公司变更后权
利人:
法律状态
专利申请权、专利权
的转移
权 利 要 求 说 明 书
1.一种浏览器的测试方法,所述浏览器至少包括第一内核和第二内核,
加载当前浏览器页面;
识别当前浏览器页面的内核;
依据当前浏览器页面的内核,获取相应的文档对象;
依据当前浏览器页面的文档对象模拟用户的操作。
2.如权利要求1所述的方法,其特征在于,所述识别当前浏览器页面
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐
依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
3.如权利要求1所述的方法,其特征在于,所述识别当前浏览器页面
的内核的步骤,包括:
标,进而得到当前浏览器页面的句柄;
的内核的步骤,包括:
其特征在于,包括:
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
枚举当前浏览器窗口的进程的子进程;
依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的
4.如权利要求1所述的方法,其特征在于,所述依据当前浏览器页面
如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接
5.如权利要求4所述的方法,其特征在于,还包括:
在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该
所述专用通道包括相应的通信端口;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤包括:
专用通道启动浏览器;
的内核,获取相应的文档对象的步骤,包括:
内核。
口获取相应的文件对象;如果当前浏览器页面的内核为第二内核,则依据相
应内核服务器的专用通道获取相应的文件对象。
向所述相应内核服务器的专用通道的通信端口发送获取文件对象的获
接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
6.如权利要求5所述的方法,其特征在于,还包括:
在浏览器启动后,如果监控到当前浏览器页面的标签发生了切换,则向
接收器在接收到该条http数据时,发送消息通知;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤还包
在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档
接收所述相应内核服务器的专用通道的通信端口返回的最新标签的文
档对象。
对象的切换指令,该切换指令中携带有最新标签的ID;
括:
取指令;
接收器发送一条http数据,该条http数据中携带有最新标签的ID;
7.如权利要求1所述的方法,其特征在于,所述加载当前浏览器页面
采用第一子线程加载当前浏览器页面,并延迟判断当前浏览器页面是否
8.一种浏览器的测试系统,所述浏览器至少包括第一内核和第二内核,
页面加载装置,用于加载当前浏览器页面;
内核识别装置,用于识别当前浏览器页面的内核;
对象获取装置,用于依据当前浏览器页面的内核,获取相应的文档对象;
测试装置,用于依据当前浏览器页面的文档对象模拟用户的操作。
9.如权利要求8所述的系统,其特征在于,所述内核识别装置包括:
第一窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口
的句柄;
及
其特征在于,包括:
的步骤,包括:
一直处于加载中,若是,则关闭当前浏览器页面及相应的子线程,并采用第
二子线程进行后续浏览器页面的加载。
页面句柄获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗
第一识别模块,用于依据当前浏览器页面的句柄类名,识别当前浏览器
10.如权利要求8所述的系统,其特征在于,所述内核识别装置包括:
第二窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口
进程获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口的
子进程枚举模块,用于枚举当前浏览器窗口的进程的子进程;
第二识别模块,用于依据当前浏览器窗口的进程的子进程的类属性,识
11.如权利要求8所述的系统,其特征在于,所述对象获取装置包括:
别当前浏览器页面的内核。
进程;
的句柄;
页面的内核。
口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;及
第一对象获取模块,用于在当前浏览器页面的内核为第一内核时,使用
第二对象获取模块,用于在当前浏览器页面的内核为第二内核时,依据
12.如权利要求11所述的系统,其特征在于,还包括:
浏览器启动装置,用于在加载当前浏览器页面前,创建第二内核服务器
所述专用通道包括相应的通信端口;
所述第二对象获取模块包括:
获取指令发送子模块,用于向所述相应内核服务器的专用通道的通信端
文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信
13.如权利要求12所述的系统,其特征在于,还包括:
监控装置,用于在浏览器启动后,监控当前浏览器页面的标签的切换;
端口返回的文档对象。
口发送获取文档对象的获取指令;
的专用通道,并依据该专用通道启动浏览器;
相应内核服务器的专用通道获取相应的文件对象。
IHTMLDocument2接口获取相应的文件对象;及
发送装置,用于在监控到当前浏览器页面的标签发生了切换时,向接收
接收器,用于在接收到该条http数据时,向解析子模块发送消息通知;
所述第二对象获取模块还包括:
解析子模块,用于在接收到该消息通知时,通过解析该条http数据获得
切换指令发送子模块,用于向所述相应内核服务器的专用通道的通信端
最新文档对象接收子模块,用于接收所述相应内核服务器的专用通道的
14.如权利要求8所述的系统,其特征在于,所述页面加载装置包括:
子线程判断模块,用于采用第一子线程加载当前浏览器页面;
回传判断模块,用于延迟判断当前浏览器页面是否一直处于加载中;
通信端口返回的最新标签的文档对象。
最新标签的ID;
器发送一条http数据,该条http数据中携带有最新标签的ID;
口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签
的ID;
关闭模块,用于在延迟判断当前浏览器页面是否一直处于加载中时,关
闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面
的加载。
说 明 书
技术领域
本申请涉及浏览器技术领域,特别是涉及一种浏览器的测试方法和系
背景技术
目前随着互联网普及率的迅猛增长,浏览器成了获取信息的重要工作。
另一方面,随着消费电子、计算机、通信一体化的趋势,浏览器也随之出现。
浏览器可以广泛用于网络电视、网络终端、数字电视机顶盒、掌上电
种信息电器和便携式网络终端中,在工业控制领域也有着广泛
统。
脑等各
的应用前景。
浏览器环境下,一般没有鼠标,遥控器的按键输入是用户与系统的唯一
交互。为此,在进行浏览器测试时,需要人工多次进行按键操作,而且对于
一个问题只有在长时间才会出现的情况,则回归测试、重现问题等过
要长时间、重复地按键操作。因此,这种方式不仅效率低,而
程也需
且操作不方便。
现有一些浏览器测试方法在测试过程中可以模拟用户在浏览器中的大
部分操作,故能省去大量的人工操作,提高测试效率,其目前支持的浏览器
有IE、Firefox、Opera等,还不支持直接操作与chrome浏览器。也
现有浏览器测试方法通常只能在IE内核的浏览器中使用,无法运用
非IE内核的浏览器中,更无法运用到带有IE内核的双核浏览
即,
到其他
器(如
WebKit+Trident的双核浏览器)中。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够能
够高效便捷地对双核浏览器进行测试。
发明内容
本申请所要解决的技术问题是提供一种浏览器的测试方法和系统,能够
为了解决上述问题,本申请公开了一种浏览器的测试方法,所述浏览器
加载当前浏览器页面;
识别当前浏览器页面的内核;
依据当前浏览器页面的内核,获取相应的文档对象;
依据当前浏览器页面的文档对象模拟用户的操作。
优选的,所述识别当前浏览器页面的内核的步骤,包括:
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐
依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
优选的,所述识别当前浏览器页面的内核的步骤,包括:
标,进而得到当前浏览器页面的句柄;
至少包括第一内核和第二内核,包括:
高效便捷地对双核、多核等浏览器进行测试。
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
枚举当前浏览器窗口的进程的子进程;
依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的
优选的,所述依据当前浏览器页面的内核,获取相应的文档对象的步骤,
如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接
优选的,还包括:
在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该
所述专用通道包括相应的通信端口;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤包括:
向所述相应内核服务器的专用通道的通信端口发送获取文件对象的获
接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
取指令;
专用通道启动浏览器;
口获取相应的文件对象;如果当前浏览器页面的内核为第二内核,则依据相
应内核服务器的专用通道获取相应的文件对象。
包括:
内核。
优选的,所述方法还包括:
在浏览器启动后,如果监控到当前浏览器页面的标签发生了切换,则向
接收器在接收到该条http数据时,发送消息通知;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤还包
在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档
接收所述相应内核服务器的专用通道的通信端口返回的最新标签的文
优选的,所述加载当前浏览器页面的步骤,包括:
采用第一子线程加载当前浏览器页面,并延迟判断当前浏览器页面是否
另一方面,本申请还公开了一种浏览器的测试系统,所述浏览器至少包
页面加载装置,用于加载当前浏览器页面;
括第一内核和第二内核,包括:
一直处于加载中,若是,则关闭当前浏览器页面及相应的子线程,并采用第
二子线程进行后续浏览器页面的加载。
档对象。
对象的切换指令,该切换指令中携带有最新标签的ID;
括:
接收器发送一条http数据,该条http数据中携带有最新标签的ID;
内核识别装置,用于识别当前浏览器页面的内核;
对象获取装置,用于依据当前浏览器页面的内核,获取相应的文档对象;
测试装置,用于依据当前浏览器页面的文档对象模拟用户的操作。
优选的,所述内核识别装置包括:
第一窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口
页面句柄获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗
第一识别模块,用于依据当前浏览器页面的句柄类名,识别当前浏览器
优选的,所述内核识别装置包括:
第二窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口
进程获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口的
子进程枚举模块,用于枚举当前浏览器窗口的进程的子进程;
进程;
的句柄;
页面的内核。
口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;及
的句柄;
及
第二识别模块,用于依据当前浏览器窗口的进程的子进程的类属性,识
优选的,所述对象获取装置包括:
第一对象获取模块,用于在当前浏览器页面的内核为第一内核时,使用
第二对象获取模块,用于在当前浏览器页面的内核为第二内核时,依据
优选的,还包括:
浏览器启动装置,用于在加载当前浏览器页面前,创建第二内核服务器
所述专用通道包括相应的通信端口;
所述第二对象获取模块包括:
获取指令发送子模块,用于向所述相应内核服务器的专用通道的通信端
文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信
优选的,所述系统还包括:
监控装置,用于在浏览器启动后,监控当前浏览器页面的标签的切换;
端口返回的文档对象。
口发送获取文档对象的获取指令;
的专用通道,并依据该专用通道启动浏览器;
相应内核服务器的专用通道获取相应的文件对象。
IHTMLDocument2接口获取相应的文件对象;及
别当前浏览器页面的内核。
发送装置,用于在监控到当前浏览器页面的标签发生了切换时,向接收
接收器,用于在接收到该条http数据时,向解析子模块发送消息通知;
所述第二对象获取模块还包括:
解析子模块,用于在接收到该消息通知时,通过解析该条http数据获得
切换指令发送子模块,用于向所述相应内核服务器的专用通道的通信端
最新文档对象接收子模块,用于接收所述相应内核服务器的专用通道的
优选的,所述页面加载装置包括:
子线程判断模块,用于采用第一子线程加载当前浏览器页面;
回传判断模块,用于延迟判断当前浏览器页面是否一直处于加载中;
关闭模块,用于在延迟判断当前浏览器页面是否一直处于加载中时,关
与现有技术相比,本申请具有以下优点:
闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面
的加载。
通信端口返回的最新标签的文档对象。
口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签
的ID;
最新标签的ID;
器发送一条http数据,该条http数据中携带有最新标签的ID;
本申请可用于至少包括第一内核的第二内核的双核或多核浏览器,用于
附图说明
图1是本申请一种浏览器的测试方法实施例1的流程图;
图2是本申请一种浏览器的测试方法实施例2的流程图;
图3是本申请一种浏览器的测试方法实施例3的流程图;
图4是本申请一种浏览器的测试方法实施例4的流程图;
图5是本申请一种浏览器的测试系统实施例的结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图
参照图1,示出了本申请一种浏览器的测试方法实施例1的流程图,所
步骤101、加载当前浏览器页面;
步骤102、识别当前浏览器页面的内核;
述浏览器至少包括第一内核和第二内核,具体可以包括:
和具体实施方式对本申请作进一步详细的说明。
通过识别来获取不同内核的文档对象,利用文档对象模拟用户操作,实现双
核或多核浏览器测试的自动化,提高测试的便捷性和测试效率。
步骤103、依据当前浏览器页面的内核,获取相应的文档对象;
步骤104、依据当前浏览器页面的文档对象模拟用户的操作。
本申请可用于WebKit+Trident、Gecko+Trident等双核或多核浏览器,用
本申请可以基于当前浏览器页面的控件,提供如下识别当前浏览器页面
方案一、
所述识别当前浏览器页面的内核的步骤,具体可以包括:
步骤A1、采用查找标题的方式得到当前浏览器窗口的句柄;
步骤A2、依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的
当前浏览器窗口相对屏幕的位置具有四个坐标:左上角坐标、左下角坐
标、右上角坐标和右下角坐标,为得到当前浏览器页面的句柄,本申请仅选
取左上角坐标。在左上角坐标的基础上,通常横向纵向加180个像素,
相应点的句柄,即可得到当前浏览器页面的句柄。
左上角坐标,进而得到当前浏览器页面的句柄;
的内核的方案:
于通过识别来获取不同内核的文档对象,利用文档对象模拟用户操作,实现
双核浏览器网测试的自动化,提高测试效率。
获取
步骤A3、依据当前浏览器页面的句柄类名,识别当前浏览器页面的内
核。
在实际中,如果当前浏览器页面的句柄类名是
“Chrome_RenderWidgetHostHWND”,则认为当前浏览器页面为极速页面,
于是可将当前浏览器页面的内核识别为WebKit
的句柄类名是“Internet Explorer_Server”,
于是将当前浏览器页面的内核识别
句柄类名为“MozillaWindowClass”,
浏览器对应的是Gecko内核,
内核;如果当前浏览器页面
则认为当前浏览器页面为IE页面,
为Trident内核;如果当前浏览器页面的
则说明是Firefox浏览器,而Firefox
方案二、
所述识别当前浏览器页面的内核的步骤,具体可以包括:
步骤B1、采用查找标题的方式得到当前浏览器窗口的句柄;
步骤B2、依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
步骤B3、枚举当前浏览器窗口的进程的子进程;
步骤B4、依据当前浏览器窗口的进程的子进程的类属性,识别当前浏
在实际中,可以查找当前浏览器窗口的进程的子进程的类属性,如果找
浏
览器页面的内核。
到“Chrome_RenderWidgetHostHWND”这个类,认为当前浏览器页面为极速
页面,于是可将当前浏览器页面的内核识别为WebKit内核;如果找到
“Internet Explorer_Server”,则认为当前浏览器页面为IE页面,于是将当前
览器页面的内核识别为Trident内核;如果找到
为当前浏览器页面为Firefox页面,于是“MozillaWindowClass”,则认
将当前浏览器页面的内核识别为
Gecko内核。
以上对识别当前浏览器页面的内核的几种方案进行了详细介绍,可以理
解,本领域技术人员根据需要结合使用上述几种方案,或者,使用其中任一
种方案。另外,对于内核类别的识别,是不限于上述两种方案的,随
的发展,其它用于内核类别识别的方法都涵盖在本申请的范围
着技术
之中。
DOM是Document Object Model文档对象模型的缩写。根据W3C DOM
所有的浏览器都执行了DOM规范,且文件对象存在于各种操作系统中。
例如,在Windows系统中,文件(Document)对象是
分,可通过nt属性对其进行访问。
(超文本标记语言,Hypertext Markup Language)
象。运用Document对象可以从脚本中对HTML
问,比如:点击click()、查找指定id的元素
规范,DOM是一种与浏览器,平台,语言无关的接口,使得可以访问页面
其他的标准组件,使得可以解决各种不同游览器之间的兼容问题,使得允许
访问和操作HTML页面中的每一个单独的元素。
Windows对象的一部
每个载入浏览器的HTML
文档都会成为Document对
页面中的所有元素进行访
getElementById()等用户操作。
在本申请的一种优选实施例中,所述依据当前浏览器页面的内核,获取
如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接
口获取相应的文件对象;如果当前浏览器页面的内核为第二内核,则依据相
应内核服务器的专用通道获取相应的文件对象。在本申请实施例中,
是,所述第一内核为Trident内核,所述第二内核为WebKit
相应的文档对象的步骤,具体可以包括:
优选的
或Gecko。由于 使用微软开放的IHTMLDocument2接口获取浏览器页
领域的公知技术,故在此不作赘述。 面的文档对象,为本
在具体实现中,不同的浏览器测试用例可以使用上述获取的当前浏览器
例如,启动浏览器、打开百度页面后获取到当前页面的document对象,
links=mentsByTagName(′a′)
for(i=0;i<=;i++)
{if(links[i].innerText==″登录″){
links[i].click())}}
当用户点击【测试】按钮时,就会调用上述获取的当前浏览器页面的文
档对象来执行所设计好的操作,比如:疯狂的打开一些页面、看视频、关闭
标签等操作。最后根据打开的页面数量和崩溃数,给用户一个分值,
浏览器的稳定性。
然后点击“新闻”链接,相应的代码如下:
页面的文档对象来模拟不同的用户操作。假设要测试双核浏览器的稳定性,
则可以把稳定性测试用例搭建到互联网页面上。
说明其
在本申请的一种优选实施例中,所述加载当前浏览器页面的步骤,可以
采用第一子线程加载当前浏览器页面,并延迟判断当前浏览器页面是否
一直处于加载中,若是,则关闭当前浏览器页面及相应的子线程,并采用第
二子线程进行后续浏览器页面的加载。
进一步包括:
本实施例采用多线程的方法,也即使用子线程进行了回传判断,延迟判
断网页是否一直加载中,如果是的话就关闭当前浏览器页面及相应的子线
程,并采用其它子线程进行后续浏览器页面的加载;由于关闭当前浏览器页
面及相应的子线程可以重新初始化第二内核服务器而继续使用,避免
核服务器的阻塞,提高测试效率。 第二内
总之,本申请可以在360极速浏览器等WebKit+Trident、Gecko+Trident
等双核浏览器或多核浏览器中获取当前浏览器页面的文档对象,后期使用当
前浏览器页面的文档对象来模拟不同的用户操作结合压力测试等各种
器测试方法,计算在测试期间出现的卡死、崩溃概率等参数,从而得
器性能的相关数据。
浏览
到浏览
参照图2,示出了本申请一种浏览器的测试方法实施例2的流程图,所
步骤201、创建第二内核服务器的专用通道,并依据该专用通道启动浏
本申请实施例中,所述第二内核可以为WebKit或Gecko;创建Gecko
例如,WebKit服务器的一个典型示例为chromedriver服务器,其通常
应用于chrome浏览器中。在实际中,启动创建通信端口,
就可以给通信端口发送启动命令来启动浏览器。
或WebKit内核服务器的专用通道,并依据该专用通道启动浏览器,是为了
创建操作Gecko或WebKit内核服务器的对象,从而为下一步获取相应内核
的文档对象做好准备。
览器;
述浏览器至少包括第一内核和第二内核,具体可以包括:
步骤202、加载当前浏览器页面;
在实际中,在依据该专用通道启动浏览器后,首次加载浏览器页面可依
据相应浏览器的通信端口来完成。以后的浏览器页面加载可通过点击连接、
地址栏打开URL(统一资源定位符,
本申请对具体的加载浏览器页面的Uniform Resource Locator)的方式实现,
方式不加以限制。
步骤203、识别当前浏览器页面的内核;
步骤204、如果当前浏览器页面的内核为第一内核,则使用
步骤205、所述专用通道具体可以包括相应的通信端口;如果当前浏览
器页面的内核为第二内核,则向所述相应内核服务器的专用通道的通信端口
发送获取文件对象的获取指令,并接收所述相应内核服务器的专用通
信端口返回的文档对象;
IHTMLDocument2接口获取相应的文件对象;
道的通
在实际中,利用chromedriver这一谷歌内部人员开发的接口可获取浏览
器页面的文档对象。具体到本申请,可通过交互得到所述文档对象,相应地,
所述依据所述WebKit服务器获取相应的文档对象的步骤具体可以包
括:
步骤C1、向所述WebKit内核服务器的专用通道的通信端口发送获取文
步骤C2、接收所述WebKit内核服务器的专用通道的通信端口返回的文
档对象。
档对象的获取指令;
步骤206、依据当前浏览器页面的文档对象模拟用户的操作。
参照图3,示出了本申请一种浏览器的测试方法实施例3的流程图,具
步骤301、创建第二内核服务器的专用通道,并依据该专用通道启动浏
步骤302、在浏览器启动后,如果监控到当前浏览器页面的标签发生了
切换,则向接收器发送一条http数据,该条http数据中携带有最新标签的
览器;
体可以包括:
ID;
http的中文名称为,超文本传送协议,英文全称为hypertext transport
步骤303、接收器在接收到该条http数据时,发送消息通知;
步骤304、加载当前浏览器页面;
步骤305、识别当前浏览器页面的内核;
步骤306、如果当前浏览器页面的内核为第一内核,则使用
步骤307、所述专用通道具体可以包括相应的通信端口;如果当前浏览
器页面的内核为第二内核,则向所述相应内核服务器的专用通道的通信端口
发送获取文件对象的获取指令,并接收所述相应内核服务器的专用通
信端口返回的文档对象;
IHTMLDocument2接口获取相应的文件对象;
protocol;ID的中文名称为身份标识,英文全称为Identity。
道的通
步骤308、在接收到该消息通知时,通过解析该条http数据获得最新标
步骤309、向第二内核服务器的专用通道的通信端口发送切换标签ID
步骤310、接收第二内核服务器的专用通道的通信端口返回的最新标签
步骤311、依据当前浏览器页面的文档对象模拟用户的操作。
由于在同一时刻WebKit内核服务器的chromedriver接口只能连接一个
浏览器页面,这样,即使当前标签已被切换,其连接的还是之前的标签。因
此,为了降低获取文档对象的错误率,本申请实施例在监控到当前浏
面的标签发生了切换时,会通过http数据将最新标签的ID进
基于与操作WebKit内核服务器的对象的交互获取最新
的文档对象;
的文档对象的切换指令,该切换指令中携带有最新标签的ID;
签的ID;
览器页
行传递,从而
标签的文档对象。
在具体实现中,所述操作WebKit内核服务器的对象可以使用
对于Gecko内核服务器,由于其与WebKit内核服务器的特性相同,故
参照图4,示出了本申请一种浏览器的测试方法实施例4的流程图,具
体可以包括:
在此不作赘述,相互参照即可。
_to_window(id)方法,获取到最新标签的文档对象,其中,id为
最新标签的id。
步骤401、创建Gecko或WebKit内核服务器的专用通道,并依据该专
步骤402、采用第一子线程加载当前浏览器页面;
步骤403、延迟判断当前浏览器页面是否一直处于加载中,若是,则执
步骤404、关闭当前浏览器页面及相应的子线程,并采用第二子线程进
步骤405、识别当前浏览器页面的内核;
步骤406、如果当前浏览器页面的内核为Trident,则使用
步骤407、如果当前浏览器页面的内核为WebKit或Gecko,则依据相应
步骤408、依据当前浏览器页面的文档对象模拟用户的操作。
WebKit或Gecko内核服务器对每个网页的加载都进行了回传判断。以
针对上述情形,本实施例采用多线程的方法,也即使用子线程进行了回
内核服务器的专用通道获取相应的文件对象;
IHTMLDocument2接口获取相应的文档对象;
行后续浏览器页面的加载,并返回执行步骤403;
行步骤404,否则,执行步骤405;
用通道启动浏览器;
WebKit内核服务器为例,如果网页因为某种原因一直加载中,没有回传,
就会导致chromedriver端口被占用和阻塞,不能继续使用WebKit内核服务
器,不能获取WebKit内核的文档对象,从而降低了测试效率。
传判断,延迟判断网页是否一直加载中,如果是的话就关闭当前浏览器页面
及相应的子线程,并采用其它子线程进行后续浏览器页面的加载;由
于关闭 当前浏览器页面及相应的子线程可以重新初始化WebKit内核
使用,避免WebKit内核服务器的阻塞,提高测试效率。
断相对于加载的延迟,可由本领域技术人员根据实际需
0.01ms等,本申请对具体的延迟数值不加以限
服务器而继续
这里的延迟是指判
求确定,例如,1ms,
制。
参照图5,示出了本申请一种浏览器的测试系统实施例的结构图,所述
页面加载装置501,用于加载当前浏览器页面;
内核识别装置502,用于识别当前浏览器页面的内核;
对象获取装置503,用于依据当前浏览器页面的内核,获取相应的文档
测试装置504,用于依据当前浏览器页面的文档对象模拟用户的操作。
在本申请的一种优选实施例中,所述内核识别装置403具体可以包括:
第一窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口
页面句柄获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗
第一识别模块,用于依据当前浏览器页面的句柄类名,识别当前浏览器
页面的内核。
口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;及
的句柄;
对象;及
浏览器至少包括第一内核和第二内核,具体可以包括:
在本申请的另一种优选实施例中,所述内核识别装置403可以进一步包
第二窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口
进程获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口的
子进程枚举模块,用于枚举当前浏览器窗口的进程的子进程;
第二识别模块,用于依据当前浏览器窗口的进程的子进程的类属性,识
在本申请实施例中,优选的是,所述对象获取装置404具体可以包括:
第一对象获取模块,用于在当前浏览器页面的内核为第一内核时,使用
第二对象获取模块,用于在当前浏览器页面的内核为第二内核时,依据
在本申请的一种优选实施例中,所述装置还可以包括:
浏览器启动装置,用于在加载当前浏览器页面前,创建第二内核服务器
所述专用通道可以包括相应的通信端口;
的专用通道,并依据该专用通道启动浏览器;
相应内核服务器的专用通道获取相应的文件对象。
IHTMLDocument2接口获取相应的文件对象;及
别当前浏览器页面的内核。
进程;
的句柄;
括:
此时,所述第二对象获取模块具体可以包括:
获取指令发送子模块,用于向所述相应内核服务器的专用通道的通信端
文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信
在本申请的一种优选实施例中,所述系统还可以包括:
监控装置,用于在浏览器启动后,监控当前浏览器页面的标签的切换;
发送装置,用于在监控到当前浏览器页面的标签发生了切换时,向接收
接收器,用于在接收到该条http数据时,向解析子模块发送消息通知;
此时,所述第二对象获取模块还可以包括:
解析子模块,用于在接收到该消息通知时,通过解析该条http数据获得
切换指令发送子模块,用于向所述相应内核服务器的专用通道的通信端
最新文档对象接收子模块,用于接收所述相应内核服务器的专用通道的
通信端口返回的最新标签的文档对象。
口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签
的ID;
最新标签的ID;
器发送一条http数据,该条http数据中携带有最新标签的ID;
端口返回的文档对象。
口发送获取文档对象的获取指令;
在本申请的一种优选实施例中,所述页面加载装置402可以进一步包括:
子线程判断模块,用于采用第一子线程加载当前浏览器页面;
回传判断模块,用于延迟判断当前浏览器页面是否一直处于加载中;
关闭模块,用于在延迟判断当前浏览器页面是否一直处于加载中时,关
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明
的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见
即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描
较简单,相关之处参见方法实施例
闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面
的加载。
述的比
的部分说明即可。
以上对本申请所提供的一种浏览器的测试方法和系统,进行了详细介
绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实
施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对
域的一般技术人员,依据本申请的思想,在具体实施方式及应
有改变之处,综上所述,本说明书内容不应理解为对本
于本领
用范围上均会
申请的限制。


发布评论