CN104714889A - 一种浏览器的测试方法和*** - Google Patents
一种浏览器的测试方法和*** Download PDFInfo
- Publication number
- CN104714889A CN104714889A CN201510142407.2A CN201510142407A CN104714889A CN 104714889 A CN104714889 A CN 104714889A CN 201510142407 A CN201510142407 A CN 201510142407A CN 104714889 A CN104714889 A CN 104714889A
- Authority
- CN
- China
- Prior art keywords
- kernel
- current browser
- browser page
- page
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种浏览器的测试方法和***,所述浏览器至少包括第一内核和第二内核,其中的方法具体包括:加载当前浏览器页面;识别当前浏览器页面的内核;依据当前浏览器页面的内核,获取相应的文档对象;依据当前浏览器页面的文档对象模拟用户的操作。本申请能够高效便捷地对双核、多核等浏览器进行测试。
Description
技术领域
本申请涉及浏览器技术领域,特别是涉及一种浏览器的测试方法和***。
背景技术
目前随着互联网普及率的迅猛增长,浏览器成了获取信息的重要工作。另一方面,随着消费电子、计算机、通信一体化的趋势,浏览器也随之出现。浏览器可以广泛用于网络电视、网络终端、数字电视机顶盒、掌上电脑等各种信息电器和便携式网络终端中,在工业控制领域也有着广泛的应用前景。
浏览器环境下,一般没有鼠标,遥控器的按键输入是用户与***的唯一交互。为此,在进行浏览器测试时,需要人工多次进行按键操作,而且对于一个问题只有在长时间才会出现的情况,则回归测试、重现问题等过程也需要长时间、重复地按键操作。因此,这种方式不仅效率低,而且操作不方便。
现有一些浏览器测试方法在测试过程中可以模拟用户在浏览器中的大部分操作,故能省去大量的人工操作,提高测试效率,其目前支持的浏览器有IE、Firefox、Opera等,还不支持直接操作与chrome浏览器。也即,现有浏览器测试方法通常只能在IE内核的浏览器中使用,无法运用到其他非IE内核的浏览器中,更无法运用到带有IE内核的双核浏览器(如WebKit+Trident的双核浏览器)中。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够能够高效便捷地对双核浏览器进行测试。
发明内容
本申请所要解决的技术问题是提供一种浏览器的测试方法和***,能够高效便捷地对双核、多核等浏览器进行测试。
为了解决上述问题,本申请公开了一种浏览器的测试方法,所述浏览器至少包括第一内核和第二内核,包括:
加载当前浏览器页面;
识别当前浏览器页面的内核;
依据当前浏览器页面的内核,获取相应的文档对象;
依据当前浏览器页面的文档对象模拟用户的操作。
优选的,所述识别当前浏览器页面的内核的步骤,包括:
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;
依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
优选的,所述识别当前浏览器页面的内核的步骤,包括:
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
枚举当前浏览器窗口的进程的子进程;
依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的内核。
优选的,所述依据当前浏览器页面的内核,获取相应的文档对象的步骤,包括:
如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接口获取相应的文件对象;如果当前浏览器页面的内核为第二内核,则依据相应内核服务器的专用通道获取相应的文件对象。
优选的,还包括:
在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
所述专用通道包括相应的通信端口;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤包括:
向所述相应内核服务器的专用通道的通信端口发送获取文件对象的获取指令;
接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
优选的,所述方法还包括:
在浏览器启动后,如果监控到当前浏览器页面的标签发生了切换,则向接收器发送一条http数据,该条http数据中携带有最新标签的ID;
接收器在接收到该条http数据时,发送消息通知;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤还包括:
在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签的ID;
接收所述相应内核服务器的专用通道的通信端口返回的最新标签的文档对象。
优选的,所述加载当前浏览器页面的步骤,包括:
采用第一子线程加载当前浏览器页面,并延迟判断当前浏览器页面是否一直处于加载中,若是,则关闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面的加载。
另一方面,本申请还公开了一种浏览器的测试***,所述浏览器至少包括第一内核和第二内核,包括:
页面加载装置,用于加载当前浏览器页面;
内核识别装置,用于识别当前浏览器页面的内核;
对象获取装置,用于依据当前浏览器页面的内核,获取相应的文档对象;及
测试装置,用于依据当前浏览器页面的文档对象模拟用户的操作。
优选的,所述内核识别装置包括:
第一窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口的句柄;
页面句柄获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;及
第一识别模块,用于依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
优选的,所述内核识别装置包括:
第二窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口的句柄;
进程获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
子进程枚举模块,用于枚举当前浏览器窗口的进程的子进程;
第二识别模块,用于依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的内核。
优选的,所述对象获取装置包括:
第一对象获取模块,用于在当前浏览器页面的内核为第一内核时,使用IHTMLDocument2接口获取相应的文件对象;及
第二对象获取模块,用于在当前浏览器页面的内核为第二内核时,依据相应内核服务器的专用通道获取相应的文件对象。
优选的,还包括:
浏览器启动装置,用于在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
所述专用通道包括相应的通信端口;
所述第二对象获取模块包括:
获取指令发送子模块,用于向所述相应内核服务器的专用通道的通信端口发送获取文档对象的获取指令;
文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
优选的,所述***还包括:
监控装置,用于在浏览器启动后,监控当前浏览器页面的标签的切换;
发送装置,用于在监控到当前浏览器页面的标签发生了切换时,向接收器发送一条http数据,该条http数据中携带有最新标签的ID;
接收器,用于在接收到该条http数据时,向解析子模块发送消息通知;
所述第二对象获取模块还包括:
解析子模块,用于在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
切换指令发送子模块,用于向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签的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”,则认为当前浏览器页面为IE页面,于是将当前浏览器页面的内核识别为Trident内核;如果当前浏览器页面的句柄类名为“MozillaWindowClass”,则说明是Firefox浏览器,而Firefox浏览器对应的是Gecko内核,
方案二、
所述识别当前浏览器页面的内核的步骤,具体可以包括:
步骤B1、采用查找标题的方式得到当前浏览器窗口的句柄;
步骤B2、依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
步骤B3、枚举当前浏览器窗口的进程的子进程;
步骤B4、依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的内核。
在实际中,可以查找当前浏览器窗口的进程的子进程的类属性,如果找到“Chrome_RenderWidgetHostHWND”这个类,认为当前浏览器页面为极速页面,于是可将当前浏览器页面的内核识别为WebKit内核;如果找到“Internet Explorer_Server”,则认为当前浏览器页面为IE页面,于是将当前浏览器页面的内核识别为Trident内核;如果找到“MozillaWindowClass”,则认为当前浏览器页面为Firefox页面,于是将当前浏览器页面的内核识别为Gecko内核。
以上对识别当前浏览器页面的内核的几种方案进行了详细介绍,可以理解,本领域技术人员根据需要结合使用上述几种方案,或者,使用其中任一种方案。另外,对于内核类别的识别,是不限于上述两种方案的,随着技术的发展,其它用于内核类别识别的方法都涵盖在本申请的范围之中。
DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得可以访问页面其他的标准组件,使得可以解决各种不同游览器之间的兼容问题,使得允许访问和操作HTML页面中的每一个单独的元素。
所有的浏览器都执行了DOM规范,且文件对象存在于各种操作***中。例如,在Windows***中,文件(Document)对象是Windows对象的一部分,可通过window.document属性对其进行访问。每个载入浏览器的HTML(超文本标记语言,Hypertext Markup Language)文档都会成为Document对象。运用Document对象可以从脚本中对HTML页面中的所有元素进行访问,比如:点击click()、查找指定id的元素getElementById()等用户操作。
在本申请的一种优选实施例中,所述依据当前浏览器页面的内核,获取相应的文档对象的步骤,具体可以包括:
如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接口获取相应的文件对象;如果当前浏览器页面的内核为第二内核,则依据相应内核服务器的专用通道获取相应的文件对象。在本申请实施例中,优选的是,所述第一内核为Trident内核,所述第二内核为WebKit或Gecko。由于使用微软开放的IHTMLDocument2接口获取浏览器页面的文档对象,为本领域的公知技术,故在此不作赘述。
在具体实现中,不同的浏览器测试用例可以使用上述获取的当前浏览器页面的文档对象来模拟不同的用户操作。假设要测试双核浏览器的稳定性,则可以把稳定性测试用例搭建到互联网页面上。
例如,启动浏览器、打开百度页面后获取到当前页面的document对象,然后点击“新闻”链接,相应的代码如下:
links=ieDoc.getElementsByTagName('a')
for(i=0;i<=links.length;i++)
{if(links[i].innerText=="登录"){
links[i].click())}}
当用户点击【测试】按钮时,就会调用上述获取的当前浏览器页面的文档对象来执行所设计好的操作,比如:疯狂的打开一些页面、看视频、关闭标签等操作。最后根据打开的页面数量和崩溃数,给用户一个分值,说明其浏览器的稳定性。
在本申请的一种优选实施例中,所述加载当前浏览器页面的步骤,可以进一步包括:
采用第一子线程加载当前浏览器页面,并延迟判断当前浏览器页面是否一直处于加载中,若是,则关闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面的加载。
本实施例采用多线程的方法,也即使用子线程进行了回传判断,延迟判断网页是否一直加载中,如果是的话就关闭当前浏览器页面及相应的子线程,并采用其它子线程进行后续浏览器页面的加载;由于关闭当前浏览器页面及相应的子线程可以重新初始化第二内核服务器而继续使用,避免第二内核服务器的阻塞,提高测试效率。
总之,本申请可以在360极速浏览器等WebKit+Trident、Gecko+Trident等双核浏览器或多核浏览器中获取当前浏览器页面的文档对象,后期使用当前浏览器页面的文档对象来模拟不同的用户操作结合压力测试等各种浏览器测试方法,计算在测试期间出现的卡死、崩溃概率等参数,从而得到浏览器性能的相关数据。
参照图2,示出了本申请一种浏览器的测试方法实施例2的流程图,所述浏览器至少包括第一内核和第二内核,具体可以包括:
步骤201、创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
本申请实施例中,所述第二内核可以为WebKit或Gecko;创建Gecko或WebKit内核服务器的专用通道,并依据该专用通道启动浏览器,是为了创建操作Gecko或WebKit内核服务器的对象,从而为下一步获取相应内核的文档对象做好准备。
例如,WebKit服务器的一个典型示例为chromedriver服务器,其通常应用于chrome浏览器中。在实际中,启动chromedriver.exe创建通信端口,就可以给通信端口发送启动命令来启动浏览器。
步骤202、加载当前浏览器页面;
在实际中,在依据该专用通道启动浏览器后,首次加载浏览器页面可依据相应浏览器的通信端口来完成。以后的浏览器页面加载可通过点击连接、地址栏打开URL(统一资源定位符,Uniform Resource Locator)的方式实现,本申请对具体的加载浏览器页面的方式不加以限制。
步骤203、识别当前浏览器页面的内核;
步骤204、如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接口获取相应的文件对象;
步骤205、所述专用通道具体可以包括相应的通信端口;如果当前浏览器页面的内核为第二内核,则向所述相应内核服务器的专用通道的通信端口发送获取文件对象的获取指令,并接收所述相应内核服务器的专用通道的通信端口返回的文档对象;
在实际中,利用chromedriver这一谷歌内部人员开发的接口可获取浏览器页面的文档对象。具体到本申请,可通过交互得到所述文档对象,相应地,所述依据所述WebKit服务器获取相应的文档对象的步骤具体可以包括:
步骤C1、向所述WebKit内核服务器的专用通道的通信端口发送获取文档对象的获取指令;
步骤C2、接收所述WebKit内核服务器的专用通道的通信端口返回的文档对象。
步骤206、依据当前浏览器页面的文档对象模拟用户的操作。
参照图3,示出了本申请一种浏览器的测试方法实施例3的流程图,具体可以包括:
步骤301、创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
步骤302、在浏览器启动后,如果监控到当前浏览器页面的标签发生了切换,则向接收器发送一条http数据,该条http数据中携带有最新标签的ID;
http的中文名称为,超文本传送协议,英文全称为hypertext transportprotocol;ID的中文名称为身份标识,英文全称为Identity。
步骤303、接收器在接收到该条http数据时,发送消息通知;
步骤304、加载当前浏览器页面;
步骤305、识别当前浏览器页面的内核;
步骤306、如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接口获取相应的文件对象;
步骤307、所述专用通道具体可以包括相应的通信端口;如果当前浏览器页面的内核为第二内核,则向所述相应内核服务器的专用通道的通信端口发送获取文件对象的获取指令,并接收所述相应内核服务器的专用通道的通信端口返回的文档对象;
步骤308、在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
步骤309、向第二内核服务器的专用通道的通信端口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签的ID;
步骤310、接收第二内核服务器的专用通道的通信端口返回的最新标签的文档对象;
步骤311、依据当前浏览器页面的文档对象模拟用户的操作。
由于在同一时刻WebKit内核服务器的chromedriver接口只能连接一个浏览器页面,这样,即使当前标签已被切换,其连接的还是之前的标签。因此,为了降低获取文档对象的错误率,本申请实施例在监控到当前浏览器页面的标签发生了切换时,会通过http数据将最新标签的ID进行传递,从而基于与操作WebKit内核服务器的对象的交互获取最新标签的文档对象。
在具体实现中,所述操作WebKit内核服务器的对象可以使用driver.switch_to_window(id)方法,获取到最新标签的文档对象,其中,id为最新标签的id。
对于Gecko内核服务器,由于其与WebKit内核服务器的特性相同,故在此不作赘述,相互参照即可。
参照图4,示出了本申请一种浏览器的测试方法实施例4的流程图,具体可以包括:
步骤401、创建Gecko或WebKit内核服务器的专用通道,并依据该专用通道启动浏览器;
步骤402、采用第一子线程加载当前浏览器页面;
步骤403、延迟判断当前浏览器页面是否一直处于加载中,若是,则执行步骤404,否则,执行步骤405;
步骤404、关闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面的加载,并返回执行步骤403;
步骤405、识别当前浏览器页面的内核;
步骤406、如果当前浏览器页面的内核为Trident,则使用IHTMLDocument2接口获取相应的文档对象;
步骤407、如果当前浏览器页面的内核为WebKit或Gecko,则依据相应内核服务器的专用通道获取相应的文件对象;
步骤408、依据当前浏览器页面的文档对象模拟用户的操作。
WebKit或Gecko内核服务器对每个网页的加载都进行了回传判断。以WebKit内核服务器为例,如果网页因为某种原因一直加载中,没有回传,就会导致chromedriver端口被占用和阻塞,不能继续使用WebKit内核服务器,不能获取WebKit内核的文档对象,从而降低了测试效率。
针对上述情形,本实施例采用多线程的方法,也即使用子线程进行了回传判断,延迟判断网页是否一直加载中,如果是的话就关闭当前浏览器页面及相应的子线程,并采用其它子线程进行后续浏览器页面的加载;由于关闭当前浏览器页面及相应的子线程可以重新初始化WebKit内核服务器而继续使用,避免WebKit内核服务器的阻塞,提高测试效率。这里的延迟是指判断相对于加载的延迟,可由本领域技术人员根据实际需求确定,例如,1ms,0.01ms等,本申请对具体的延迟数值不加以限制。
参照图5,示出了本申请一种浏览器的测试***实施例的结构图,所述浏览器至少包括第一内核和第二内核,具体可以包括:
页面加载装置501,用于加载当前浏览器页面;
内核识别装置502,用于识别当前浏览器页面的内核;
对象获取装置503,用于依据当前浏览器页面的内核,获取相应的文档对象;及
测试装置504,用于依据当前浏览器页面的文档对象模拟用户的操作。
在本申请的一种优选实施例中,所述内核识别装置403具体可以包括:
第一窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口的句柄;
页面句柄获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;及
第一识别模块,用于依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
在本申请的另一种优选实施例中,所述内核识别装置403可以进一步包括:
第二窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口的句柄;
进程获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
子进程枚举模块,用于枚举当前浏览器窗口的进程的子进程;
第二识别模块,用于依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的内核。
在本申请实施例中,优选的是,所述对象获取装置404具体可以包括:
第一对象获取模块,用于在当前浏览器页面的内核为第一内核时,使用IHTMLDocument2接口获取相应的文件对象;及
第二对象获取模块,用于在当前浏览器页面的内核为第二内核时,依据相应内核服务器的专用通道获取相应的文件对象。
在本申请的一种优选实施例中,所述装置还可以包括:
浏览器启动装置,用于在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
所述专用通道可以包括相应的通信端口;
此时,所述第二对象获取模块具体可以包括:
获取指令发送子模块,用于向所述相应内核服务器的专用通道的通信端口发送获取文档对象的获取指令;
文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
在本申请的一种优选实施例中,所述***还可以包括:
监控装置,用于在浏览器启动后,监控当前浏览器页面的标签的切换;
发送装置,用于在监控到当前浏览器页面的标签发生了切换时,向接收器发送一条http数据,该条http数据中携带有最新标签的ID;
接收器,用于在接收到该条http数据时,向解析子模块发送消息通知;
此时,所述第二对象获取模块还可以包括:
解析子模块,用于在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
切换指令发送子模块,用于向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签的ID;
最新文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信端口返回的最新标签的文档对象。
在本申请的一种优选实施例中,所述页面加载装置402可以进一步包括:
子线程判断模块,用于采用第一子线程加载当前浏览器页面;
回传判断模块,用于延迟判断当前浏览器页面是否一直处于加载中;
关闭模块,用于在延迟判断当前浏览器页面是否一直处于加载中时,关闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面的加载。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于***实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种浏览器的测试方法和***,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种浏览器的测试方法,所述浏览器至少包括第一内核和第二内核,其特征在于,包括:
加载当前浏览器页面;
识别当前浏览器页面的内核;
依据当前浏览器页面的内核,获取相应的文档对象;
依据当前浏览器页面的文档对象模拟用户的操作。
2.如权利要求1所述的方法,其特征在于,所述识别当前浏览器页面的内核的步骤,包括:
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;
依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
3.如权利要求1所述的方法,其特征在于,所述识别当前浏览器页面的内核的步骤,包括:
采用查找标题的方式得到当前浏览器窗口的句柄;
依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
枚举当前浏览器窗口的进程的子进程;
依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的内核。
4.如权利要求1所述的方法,其特征在于,所述依据当前浏览器页面的内核,获取相应的文档对象的步骤,包括:
如果当前浏览器页面的内核为第一内核,则使用IHTMLDocument2接口获取相应的文件对象;如果当前浏览器页面的内核为第二内核,则依据相应内核服务器的专用通道获取相应的文件对象。
5.如权利要求4所述的方法,其特征在于,还包括:
在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
所述专用通道包括相应的通信端口;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤包括:
向所述相应内核服务器的专用通道的通信端口发送获取文件对象的获取指令;
接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
6.如权利要求5所述的方法,其特征在于,还包括:
在浏览器启动后,如果监控到当前浏览器页面的标签发生了切换,则向接收器发送一条http数据,该条http数据中携带有最新标签的ID;
接收器在接收到该条http数据时,发送消息通知;
所述依据相应内核服务器的专用通道获取相应的文件对象的步骤还包括:
在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签的ID;
接收所述相应内核服务器的专用通道的通信端口返回的最新标签的文档对象。
7.如权利要求1所述的方法,其特征在于,所述加载当前浏览器页面的步骤,包括:
采用第一子线程加载当前浏览器页面,并延迟判断当前浏览器页面是否一直处于加载中,若是,则关闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面的加载。
8.一种浏览器的测试***,所述浏览器至少包括第一内核和第二内核,其特征在于,包括:
页面加载装置,用于加载当前浏览器页面;
内核识别装置,用于识别当前浏览器页面的内核;
对象获取装置,用于依据当前浏览器页面的内核,获取相应的文档对象;及
测试装置,用于依据当前浏览器页面的文档对象模拟用户的操作。
9.如权利要求8所述的***,其特征在于,所述内核识别装置包括:
第一窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口的句柄;
页面句柄获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口相对屏幕的左上角坐标,进而得到当前浏览器页面的句柄;及
第一识别模块,用于依据当前浏览器页面的句柄类名,识别当前浏览器页面的内核。
10.如权利要求8所述的***,其特征在于,所述内核识别装置包括:
第二窗口句柄获取模块,用于采用查找标题的方式得到当前浏览器窗口的句柄;
进程获取模块,用于依据当前浏览器窗口的句柄获取当前浏览器窗口的进程;
子进程枚举模块,用于枚举当前浏览器窗口的进程的子进程;
第二识别模块,用于依据当前浏览器窗口的进程的子进程的类属性,识别当前浏览器页面的内核。
11.如权利要求8所述的***,其特征在于,所述对象获取装置包括:
第一对象获取模块,用于在当前浏览器页面的内核为第一内核时,使用IHTMLDocument2接口获取相应的文件对象;及
第二对象获取模块,用于在当前浏览器页面的内核为第二内核时,依据相应内核服务器的专用通道获取相应的文件对象。
12.如权利要求11所述的***,其特征在于,还包括:
浏览器启动装置,用于在加载当前浏览器页面前,创建第二内核服务器的专用通道,并依据该专用通道启动浏览器;
所述专用通道包括相应的通信端口;
所述第二对象获取模块包括:
获取指令发送子模块,用于向所述相应内核服务器的专用通道的通信端口发送获取文档对象的获取指令;
文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信端口返回的文档对象。
13.如权利要求12所述的***,其特征在于,还包括:
监控装置,用于在浏览器启动后,监控当前浏览器页面的标签的切换;
发送装置,用于在监控到当前浏览器页面的标签发生了切换时,向接收器发送一条http数据,该条http数据中携带有最新标签的ID;
接收器,用于在接收到该条http数据时,向解析子模块发送消息通知;
所述第二对象获取模块还包括:
解析子模块,用于在接收到该消息通知时,通过解析该条http数据获得最新标签的ID;
切换指令发送子模块,用于向所述相应内核服务器的专用通道的通信端口发送切换标签ID的文档对象的切换指令,该切换指令中携带有最新标签的ID;
最新文档对象接收子模块,用于接收所述相应内核服务器的专用通道的通信端口返回的最新标签的文档对象。
14.如权利要求8所述的***,其特征在于,所述页面加载装置包括:
子线程判断模块,用于采用第一子线程加载当前浏览器页面;
回传判断模块,用于延迟判断当前浏览器页面是否一直处于加载中;
关闭模块,用于在延迟判断当前浏览器页面是否一直处于加载中时,关闭当前浏览器页面及相应的子线程,并采用第二子线程进行后续浏览器页面的加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510142407.2A CN104714889B (zh) | 2012-03-29 | 2012-03-29 | 一种浏览器的测试方法和*** |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210089564.8A CN102662837B (zh) | 2012-03-29 | 2012-03-29 | 一种浏览器的测试方法和*** |
CN201510142407.2A CN104714889B (zh) | 2012-03-29 | 2012-03-29 | 一种浏览器的测试方法和*** |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210089564.8A Division CN102662837B (zh) | 2012-03-29 | 2012-03-29 | 一种浏览器的测试方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714889A true CN104714889A (zh) | 2015-06-17 |
CN104714889B CN104714889B (zh) | 2019-04-02 |
Family
ID=53414247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510142407.2A Active CN104714889B (zh) | 2012-03-29 | 2012-03-29 | 一种浏览器的测试方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714889B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101429A (zh) * | 2018-08-21 | 2018-12-28 | 青岛海信宽带多媒体技术有限公司 | 一种机顶盒的浏览器页面调试的方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070156768A1 (en) * | 2005-12-22 | 2007-07-05 | Xerox Corporation | System and method for managing dynamic document references |
CN101655863A (zh) * | 2009-04-24 | 2010-02-24 | 北京搜狗科技发展有限公司 | 在浏览器中加载网页的方法及浏览器 |
CN101909018A (zh) * | 2009-06-05 | 2010-12-08 | 潘晓丰 | 根据用户浏览网页返回即时通信群组的方法与*** |
CN102129405A (zh) * | 2010-01-13 | 2011-07-20 | 微软公司 | 跨浏览器交互性测试 |
CN102184138A (zh) * | 2011-05-19 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及*** |
CN102262635A (zh) * | 2010-05-25 | 2011-11-30 | 北京启明星辰信息技术股份有限公司 | 一种网页爬虫***及方法 |
CN102385594A (zh) * | 2010-08-31 | 2012-03-21 | 腾讯科技(深圳)有限公司 | 多核浏览器的内核控制方法和装置 |
CN102662837B (zh) * | 2012-03-29 | 2015-04-29 | 北京奇虎科技有限公司 | 一种浏览器的测试方法和*** |
-
2012
- 2012-03-29 CN CN201510142407.2A patent/CN104714889B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070156768A1 (en) * | 2005-12-22 | 2007-07-05 | Xerox Corporation | System and method for managing dynamic document references |
CN101655863A (zh) * | 2009-04-24 | 2010-02-24 | 北京搜狗科技发展有限公司 | 在浏览器中加载网页的方法及浏览器 |
CN101909018A (zh) * | 2009-06-05 | 2010-12-08 | 潘晓丰 | 根据用户浏览网页返回即时通信群组的方法与*** |
CN102129405A (zh) * | 2010-01-13 | 2011-07-20 | 微软公司 | 跨浏览器交互性测试 |
CN102262635A (zh) * | 2010-05-25 | 2011-11-30 | 北京启明星辰信息技术股份有限公司 | 一种网页爬虫***及方法 |
CN102385594A (zh) * | 2010-08-31 | 2012-03-21 | 腾讯科技(深圳)有限公司 | 多核浏览器的内核控制方法和装置 |
CN102184138A (zh) * | 2011-05-19 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及*** |
CN102662837B (zh) * | 2012-03-29 | 2015-04-29 | 北京奇虎科技有限公司 | 一种浏览器的测试方法和*** |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101429A (zh) * | 2018-08-21 | 2018-12-28 | 青岛海信宽带多媒体技术有限公司 | 一种机顶盒的浏览器页面调试的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104714889B (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662837B (zh) | 一种浏览器的测试方法和*** | |
US9485240B2 (en) | Multi-account login method and apparatus | |
CN102819561B (zh) | 一种基于网页的图片显示方法和装置 | |
CN103268361B (zh) | 网页中隐藏url的提取方法、装置和*** | |
CN102968341B (zh) | 基于多内核浏览器的不同版本ie内核切换的方法和装置 | |
CN104200166A (zh) | 基于脚本的网站漏洞扫描方法和*** | |
CN109144567B (zh) | 跨平台的网页渲染方法、装置、服务器及存储介质 | |
CN102487403B (zh) | 由服务器端执行js的方法和装置 | |
CN103258058B (zh) | 页面展现方法、***及浏览器 | |
US9785710B2 (en) | Automatic crawling of encoded dynamic URLs | |
CN106354484A (zh) | 一种浏览器兼容方法及浏览器 | |
CN106649497B (zh) | 一种网页展示方法及装置 | |
CN102298599A (zh) | 离线浏览网页方法及其*** | |
CN101963992A (zh) | 提高网页显示速度的方法及浏览器 | |
CN104123125A (zh) | 网页资源的获取方法及装置 | |
CN102819553B (zh) | 一种进行页面交互的方法及装置 | |
CN103581232A (zh) | web页面传输方法、web页面显示装置及包含该装置的*** | |
CN102664925A (zh) | 一种展现搜索结果的方法及装置 | |
JP5112401B2 (ja) | Web行動履歴取得システム、Web行動履歴取得方法、ゲートウェイ装置、及びプログラム | |
CN111367802B (zh) | web自动化测试方法、装置及计算机可读存储介质 | |
TWI519980B (zh) | 網頁顯示方法和裝置及電腦可讀取儲存介質 | |
CN105224465A (zh) | 网页调试方法及装置 | |
CN104361130A (zh) | 一种在网页中搜索局域网或指定网段内设备的方法 | |
US10095791B2 (en) | Information search method and apparatus | |
Kulkarni et al. | Automatically adapting web pages to heterogeneous devices |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220727 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |