跨浏览器交互活动记录、回放以及编辑

申请号 CN201110033228.7 申请日 2011-01-24 公开(公告)号 CN102142016A 公开(公告)日 2011-08-03
申请人 微软公司; 发明人 S·古特曼; M·范宁; M·霍尔;
摘要 本 发明 涉及跨浏览器交互活动记录、回放以及编辑。多浏览器交互活动测试记录用户与记录器浏览器的交互以供后续在一个或多个播放器浏览器中回放。截取对记录器浏览器的针对文档对象模型元素的用户输入,并且该输入和元素被记录在交互记录中。当在播放器浏览器中读取了交互记录之后,使用属性值或其他机制来 定位 对应元素。通过模拟的系统级事件将该用户输入应用于所定位的播放器元素并显示结果。可将播放器浏览器回放与记录器浏览器的屏幕截图或视频剪辑进行同步。还可编辑该交互记录。取决于诸如登录或可折叠控件等交互行为以及交互活动的其他方面的布局能够在不对每一个浏览器手动地重复输入并且不管布局引擎的差异的情况下被测试。
权利要求

1.一种利用至少一个设备的浏览器交互活动记录方法,所述设备具有至少一个逻辑处理器以及与逻辑处理器进行有效通信的至少一个存储器,所述方法包括自动地进行的以下步骤:
截取对浏览器的用户输入;
标识相关元素,即所述浏览器中的被配置成对所截取的用户输入进行响应的文档对象模型元素;
创建指定所标识的相关元素和所述用户输入的用户-浏览器交互记录;以及将所述用户-浏览器交互记录记录在计算机可读存储介质中。
2.如权利要求1所述的方法,其特征在于,所述截取步骤还包括以下步骤中的至少一个:
将透明窗口定位在浏览器窗口之前以接收针对该浏览器的用户输入设备信号
钩住所述浏览器的窗口句柄;
插入被配置成截取由用户输入设备信号所产生的事件的事件处理程序,所述事件处理程序在web服务器上的网页的原始版本中不存在。
3.如权利要求1所述的方法,其特征在于,所述设备具有光标定位设备,并且所述方法还包括在标识了所述相关元素并截取了针对该元素的用户输入之后,丢弃后续光标定位设备用户输入,直至光标移动到被分配给该相关元素的屏幕领域的外面。
4.如权利要求1所述的方法,其特征在于,所述创建步骤创建具有所述相关元素的元素ID和动作类别的用户-浏览器交互记录。
5.如权利要求1所述的方法,其特征在于,还包括在所述计算机可读存储介质中作出关联,所述关联将用户-浏览器交互记录与以下各项中的至少一个进行关联:
所述浏览器的屏幕截图;
所述浏览器的实况视图;
在多个用户输入被应用于多个浏览器文档对象模型元素时所述浏览器的视频;
网页的源代码的至少一部分的表示;
所述网页的文档对象模型树的至少一部分的表示。
6.一种跨浏览器交互活动测试系统,包括:
至少一个逻辑处理器;
与逻辑处理器进行有效通信的至少一个本地存储器;
具有网页的文档对象模型元素的浏览器,所述文档对象模型元素驻留在本地存储器中;
驻留在至少一个本地存储器中的跨浏览器结构,所述跨浏览器结构指定文档对象模型元素以及用户输入;以及
驻留在至少一个本地存储器中的交互活动测试代码,所述交互活动测试代码(i)被配置成在各浏览器文档对象模型元素之间定位与所述跨浏览器结构中指定的元素相对应的元素,并且(ii)被配置成将所述用户输入应用于所定位的元素。
7.如权利要求6所述的系统,其特征在于,所述跨浏览器结构指定具有对应的用户输入的多个文档对象模型元素,并且其中对于所述文档对象模型元素中的至少一个,所述跨浏览器结构包括:一组属性、元素的标签名、元素ID属性值、元素的DOM树位置
8.如权利要求6所述的系统,其特征在于,所述跨浏览器结构指定具有对应的用户输入的多个文档对象模型元素,并且其中对于所述用户输入中的至少一个,所述跨浏览器结构包括:用户输入的动作类别、用户输入的坐标位置。
9.如权利要求6所述的系统,其特征在于,所述系统包括以下至少一个:
驻留在本地存储器中的脚本语言语句序列,该序列包含指定文档对象模型元素和对应的用户输入的语句;
调用所述文档对象模型元素所展示的方法的语句序列。
10.如权利要求6所述的系统,其特征在于,所述交互活动测试代码包括命令窗口,并且所述交互活动测试代码被配置成执行以下命令窗口操作中的至少一个:
将实况交互记录在所述跨浏览器结构中,即记录当前用户输入和该用户输入所针对的浏览器文档对象模型元素;
基于脚本语言语句来在所述浏览器文档对象模型元素中进行实况编辑;
模拟用户输入手势;
检索网页状态信息;
在回放跨浏览器结构的用户-浏览器交互记录的序列的一组浏览器的指定的适当子集中执行命令;
执行记录-回放命令;
跨多个浏览器实例来传播DOM元素的改变;
跨多个浏览器实例来传播脚本命令语言变量的改变;
迫使多个浏览器导航到特定网页,从而重新同步浏览器交互活动。
11.如权利要求6所述的系统,其特征在于,所述交互活动测试代码被配置成执行以下操作中的至少一个:
拍摄浏览器的屏幕截图;
在多个用户输入被应用于所述跨浏览器结构中指定的多个浏览器文档对象模型元素时记录浏览器的视频;
将标记插入浏览器的视频,从而将视频剪辑与用户输入对于文档对象模型元素的应用进行同步;
在满足指定的交互活动条件时自动地冻结浏览器状态。
12.一种用数据和指令配置的计算机可读非瞬态存储介质,所述指令在被至少一个处理器执行时使所述至少一个处理器执行一种用于跨浏览器交互活动测试的方法,所述方法包括自动地进行的以下步骤:
从跨浏览器结构读取用户-浏览器交互记录,所述用户-浏览器交互记录指定文档对象模型元素和用户输入;
定位播放器浏览器中的相关元素,即所述播放器浏览器中的与所述用户-浏览器交互记录中指定的元素相对应的文档对象模型元素;
将所述用户输入应用于所述相关元素;以及
在应用了所述用户输入之后显示所述播放器浏览器。
13.如权利要求12所述的经配置的介质,其特征在于,所述定位和应用步骤是对至少两个播放器浏览器执行的,并且播放器浏览器是在所述应用步骤之后同时显示的,从而使用单个用户-浏览器交互记录来控制不同浏览器中的对应文档元素的行为。
14.如权利要求13所述的经配置的介质,其特征在于,以下条件中的至少一个发生:
对至少两种不同种类的至少两个播放器浏览器执行所述定位和应用步骤,从而使用单个用户-浏览器交互记录来控制不同种类的浏览器中的对应文档元素的行为;
对至少两个机器上的至少两个播放器浏览器执行所述定位和应用步骤,从而使用单个用户-浏览器交互记录来控制多个机器上的浏览器中的对应文档元素的行为。
15.如权利要求12所述的经配置的介质,其特征在于,所述用户-浏览器交互记录读取步骤是通过自动地进行以下操作来进行的:
截取对作为与所述播放器浏览器不同种类的浏览器的记录器浏览器的用户输入;
标识目标元素,即所述记录器浏览器中的被配置成对所截取的用户输入进行响应的文档对象模型元素;以及
从所述目标元素和所截取的用户输入创建所述用户-浏览器交互记录。
16.如权利要求12所述的经配置的介质,其特征在于,所述定位播放器浏览器中的相关元素的步骤包括以下自动地执行的步骤中的至少一个:
确定播放器浏览器元素具有也标识用户-浏览器交互记录元素的标识元素ID属性值;
如果所述用户-浏览器交互记录元素不具有这样的元素ID属性值,则确定所述播放器浏览器元素具有也标识所述用户-浏览器交互记录元素的标识DOM树位置;
如果所述用户-浏览器交互记录元素不具有这样的元素ID属性值,则确定所述播放器浏览器元素具有也标识所述用户-浏览器交互记录元素的一组元素样式特性和/或属性值;
如果所述用户-浏览器交互记录元素不具有这样的元素ID属性值,则确定所述播放器浏览器元素具有也标识所述用户-浏览器交互记录元素的元素属性值与相对于视口原点的位置的组合;
17.如权利要求12所述的经配置的介质,其特征在于,所述方法还包括以下步骤中的至少一个:
向播放器浏览器询问文档对象模型元素;
接受脚本语言语句并且作为响应修改播放器浏览器文档对象模型元素;
将播放器浏览器文档对象模型元素的当前状态存储在非易失性计算机可读存储介质中。
18.如权利要求12所述的经配置的介质,其特征在于:
所述过程还包括通过读取所述用户-浏览器交互记录、定位播放器浏览器中的相关元素、将所述用户输入应用于所述相关元素并在应用了所述用户输入之后显示所述播放器浏览器来在实况浏览器中解释所记录的用户-浏览器交互序列中的每一用户-浏览器交互记录;以及
其中以下条件中的至少一个成立:
暂停回放,即,暂停解释所述用户-浏览器交互记录的序列的步骤,直至接收到继续回放的命令;
回放发生在步进模式,即解释连续的用户-浏览器交互记录的序列中的每一个的步骤由相应用户命令来触发。
19.如权利要求12所述的经配置的介质,其特征在于,所述方法还包括以下步骤中的至少一个:
显示从浏览器记录的示出了至少一个用户-浏览器交互在所述浏览器中的应用的屏幕截图;
显示从浏览器记录的示出了多个用户-浏览器交互在所述浏览器中的应用的视频剪辑;
在从浏览器记录的示出多个用户-浏览器交互在所述浏览器中的应用的至少一个图像的显示期间将光标动画化;
显示与从浏览器记录的示出至少一个用户-浏览器交互在所述浏览器中的应用的至少一个图像同步的DOM树数据。
20.如权利要求12所述的经配置的介质,其特征在于,所述方法还包括以下步骤中的至少一个:
在单个屏幕中显示至少两个浏览器中的每一个的浏览器窗口,从而通过将注意集中于浏览器的当前活动的部分来高效地使用有限的屏幕空间;
在播放器浏览器处接收跨网络传送的多个用户-浏览器交互记录,使用接收到的浏览器交互记录来定位播放器浏览器中的相关元素,使用接收到的用户-浏览器交互记录来将用户输入应用于所述相关元素,以及在应用了所述用户输入中的至少一个之后显示播放器浏览器;
通过加载先前存储的DOM树状态来将播放器浏览器置于指定状态而非解释用户-浏览器交互记录的序列以达到所述指定状态;
通过读取浏览器交互记录、定位播放器浏览器中的相关元素、将所述用户输入应用于所述相关元素并在应用了所述用户输入之后显示播放器浏览器来解释浏览器交互记录的序列中的每一浏览器交互记录,所述浏览器交互记录是按与执行浏览器交互的次序相反的次序来被解释的,从而允许反转回放模式。

说明书全文

跨浏览器交互活动记录、回放以及编辑

技术领域

[0001] 本发明涉及用于测试不同的浏览器中的交互式屏幕布局的技术,尤其涉及对跨浏览器交互活动记录、回放以及编辑的支持。

背景技术

[0002] 浏览器可能是用于在万维网中检索、呈现以及导航网页的最常见的工具。网页可包含文本、静止图像、视频、音频以及交互式内容。浏览器还可用来访问服务器或对等体在专用网络中或在特定计算机、智能电话或其他设备上的本地文件中提供的信息。
[0003] 可以找到各种各样的现用浏览器。例如,存在着微 Internet浏览器的具有不同能的不同版本(Internet 是微软公司的标记)。虽然
Internet 浏览器被广泛使用,但也可在计算机上、在电话上、在汽车中或在其他设备中使用许多其他浏览器。浏览器在诸如它们运行于其中的操作系统、它们用来将网页对象转换成视觉显示的布局引擎、它们用来接受用户输入的机制、它们原生实现哪些特征(不使用插件或其他扩展)、以及它们支持哪些web标准和协议等特性方面不同。

发明内容

[0004] 浏览器在它们如何呈现图像、进行页面布局以及为用户生成页面交互活动方面不同。为了增强或补充用于测试不同的浏览器中的交互式屏幕布局的技术,本文描述的一些实施方式支持跨浏览器交互活动记录、回放以及编辑。例如,与一个机器配置中的一种浏览器的一系列交互可被记录在文档对象模型(DOM)树元素级,并且在不同的一种浏览器和/或在不同的机器配置中运行的浏览器中在该级回放。用户-浏览器交互记录可被用来基于例如 代码或层叠样式表代码、不同的硬件和不同的操作系统来标识和探索行为中的不同。( 是Sun Microsystems有限公司的标记)。
[0005] 一些实施方式使用具有显示器、处理器和存储器的计算机、智能电话或其他设备来支持浏览器交互活动记录。用户对记录器浏览器的输入由诸如透明窗口或事件处理程序等机制来截取。标识相关元素,即被配置成对所截取的用户输入进行响应的记录器浏览器中的文档对象模型元素。创建并记录指定该相关元素和用户输入的用户-浏览器交互记录。该交互记录还可与同该记录器浏览器的交互的屏幕截图或视频剪辑相关联;视频剪辑可包括将它与对文档对象模型元素的用户输入进行同步的标记
[0006] 一些实施方式支持在DOM树元素级进行浏览器交互活动回放。例如,交互活动测试代码读取用户-浏览器交互记录,并在播放器浏览器的各文档对象模型元素中定位与该用户-浏览器交互记录中指定的元素相对应的元素。该交互记录可能是使用同一浏览器创建的,但它也可以是从可能不同的机器配置中的不同种类的浏览器创建的。即,记录器浏览器和播放器浏览器不必是同一浏览器或同一种浏览器,或甚至不必是同一机器配置中的浏览器。它们将简单地加载相同的网页DOM元素。用户输入被应用于播放器浏览器中的所定位的DOM元素。回放可被暂停、反转、和/或与该记录器浏览器交互的静止或视频剪辑进行同步。多个播放器浏览器可以在同一或不同的机器上一个接一个地或同时地运行给定的交互记录序列。
[0007] 一些实施方式支持浏览器交互活动编辑和检查。例如,可以在记录/回放被冻结时询问并修改文档对象模型元素。还可以在交互记录的序列中插入脚本语言语句,并且一些实施方式允许编辑来插入调用文档对象模型元素所展示的方法的一系列语句。在一些实施方式中,可以通过加载先前存储的DOM树状态来将播放器浏览器置于指定状态,而非解释用户-浏览器交互记录的序列来达到该指定状态。
[0008] 所给出的这些示例仅仅是说明性的。本“发明内容”并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。相反,提供本“发明内容”是为了以简化的形式介绍将在以下“具体实施方式”中进一步描述的某些概念。本发明由权利要求书限定,并且在本发明内容与权利要求书相冲突时以权利要求书为准。
附图说明
[0009] 将参考附图给出更具体的描述。这些附图只示出了各选择性方面并且因而不完全决定范围。
[0010] 图1是示出具有至少一个处理器、至少一个存储器、至少一个浏览器以及可存在于多个网络节点上的操作环境中的其他项的计算机或其他计算设备,并且还示出配置的存储介质实施方式的框图
[0011] 图2是示出用于一些实施方式的示例体系结构中的记录器浏览器、播放器浏览器、交互活动测试代码、用户-浏览器交互记录以及其他组件的框图;
[0012] 图3是示出一些实施方式中的用于截取用户输入、应用用户输入和/或以其他方式管理用户输入的机制的框图;
[0013] 图4是表示一些实施方式中的具有在交互活动测试期间分配给记录器浏览器的一个区域以及分配给播放器浏览器的另一区域的屏幕的示图;
[0014] 图5是示出记录器浏览器驻留在一个设备上并且三个播放器浏览器分别驻留在三个其他设备上的实施方式的框图,其中这些设备由网络连接;
[0015] 图6是示出一些实施方式中的用户-浏览器交互的规范化记录的框图;
[0016] 图7是示出用于记录交互活动以及其他目的的方法和配置的存储介质实施方式的一些步骤的流程图
[0017] 图8是示出用于回放交互活动记录以及其他目的的方法和配置的存储介质实施方式的一些步骤的流程图;以及
[0018] 图9是示出一些实施方式的数据流程图。

具体实施方式

[0019] 概览
[0020] 在开发网页期间,可能花费大量努力来确保网页在各种各样的浏览器中相似地运作,包括例如微软Internet 软件、 软件以及 软件(分别是微软公司、Mozilla Foundation以及Apple有限公司的标记)的多个版本。尽管存在着用于对各元素在页面上的布局是否在不同的浏览器中相配进行静态测试的若干解决方案,但缺少用于测试如 代码行为和动画以及层叠样式表(CSS)代码行为之类的跨浏览器
交互活动的解决方案。
[0021] 跨浏览器布局的常见解决方案可被分成两组。一组包括诸如 BrowserLab服务和 Expression Web SuperPreview工具等布局解决方案。这些解决方案允许用户实质上通过拍摄页面的照片并允许用户比较这些照片来验证页面元素在多个浏览器中的布局,并且标识哪些元素是相同的(或不同的)以帮助诊断它们为什么是不同的。
在该组中,这些解决方案提供可能补充有元素信息的静态图片。这些解决方案即使探究了交互式行为,也没有充分进行探究。
[0022] 第二组包括诸如IETester工具等布局解决方案。这些解决方案仅仅以并排方式主存多个浏览器,允许用户在与一个浏览器中测试操作序列,并随后方便地切换到另一浏览器来测试同一序列。IETester工具允许开发人员访问Internet 软件的多个不兼容的版本。然而,该第二组布局软件不提供同时测试多个浏览器的能力。
[0023] 另一已知技术是“共同浏览(co-browsing)”,由此用户在他们的机器上安装专的客户端(通常是浏览器插件)。在共同浏览期间浏览器被置于主-从关系中,使得从浏览器将自动地去往主浏览器中设置的目的地。然而,共同浏览仅仅同步了网页目的地,而非在目的地网页内的用户动作和页面行为。浏览器的基于像素的记录,诸如屏幕截图和视频剪辑,也是已知的。
[0024] 相反,本文描述的一些实施方式例如通过跨浏览器页面可视化生成和跨浏览器页面可视化呈现以及更多来支持跨浏览器交互活动测试。一些实施方式提供用于通过在多个web浏览器中回放用户-浏览器交互记录来同时测试网页交互活动(动画、行为、程序响应)的机制。用户直接与记录器浏览器进行交互,并且所记录的与页面元素的交互(点击、鼠标悬停以及其他手势)被映射到一个或多个播放器浏览器中的对应的页面元素。播放器浏览器可以位于同一机器上并且甚至与记录器浏览器主存在同一界面内,或播放器可以位于与记录器不同的物理CPU上。在一些配置中,一个或多个播放器处于与记录器相同的机器上,而该同一记录的其他播放器处于不同的机器上。
[0025] 在2010年1月13日提交的题为“Cross-Browser Interactivity Testing(跨浏览器交互活动测试)”的美国专利申请第12686436号(与本申请发明人相同)中也讨论了跨浏览器交互活动。12686436号申请通过被引用而整体结合于此并构成本发明的一部分。这两申请之间的任何术语冲突或其他冲突旨在以有利于支持本申请及其权利要求书的方式来解决。
[0026] 现在将参考诸如附图中所示的那些示例性实施方式,并且将使用具体语言来描述它们。但在此示出的特征的替换和进一步修改,以及在此示出的原理的附加应用(掌握本发明的相关领域技术人员会想到)应该被认为处于权利要求的范围内。
[0027] 术语的含义在本公开内容中进行阐明,所以权利要求应当在仔细注意这些说明的情况下来阅读。给出了具体示例,但相关领域技术人员将理解其他示例也可能落入所使用的术语的意义内,并落入一个或多个权利要求的范围内。各术语不一定具有与它们在一般使用中、在特定行业使用中、或在特定字典或一组字典的使用中所具有的意义相同的意义。附图标记可以与各种措辞一起使用,以帮助示出术语的外延。从给定文本片段中省略附图标记不一定意味着文本没有在讨论附图的内容。发明人主张并行使他们对他们自己的词典编纂的权利。在此,可以在“具体实施方式”中和/或在本申请文件的其他部分,显式或隐式地定义术语。
[0028] 如本文所使用的,“计算机系统”可包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、蜂窝或移动电话、和/或提供至少部分地由指令控制的一个或多个处理器的其他设备。指令可以是以存储器和/或电路中特定的软件的形式。具体而言,虽然可以想到许多实施方式在工作站或膝上型计算机上运行,但其他实施方式可以在其他计算设备上运行,并且任何一个或多个这样的设备可以是给定实施方式的一部分。
[0029] “多线程”计算机系统是支持多执行线程的计算机系统。术语“线程”应被理解为包括能够同步或服从同步的任何代码,并且也以另一名称为人所知,如“任务”、“进程”或“协同程序”。线程可以并行运行、串行运行、或以并行执行(例如,多处理)和串行执行(例如,时间分片)的组合来运行。在各种配置中都设计了多线程环境。执行线程可以并行运行,或可以组织线程以供并行执行但实际上串行轮流执行。例如,可通过在多处理环境中的不同的核上运行不同的线程、通过在单个处理器核上对不同的线程进行时间分片、或通过时间分片和多处理器线程化的某些组合,来实现多线程。例如,可以通过内核的线程调度器、通过用户空间信号、或通过用户空间和内核操作的组合,来启动线程上下文切换。例如,线程可以轮流操作共享数据,或每一线程可以操作其自己的数据。
[0030] “逻辑处理器”或“处理器”是单个独立硬件线程处理单元。例如,每个核运行两个线程的超线程四核芯片具有八个逻辑处理器。处理器可以是通用的,或者它们可以针对诸如图形处理、信号处理、浮点算术处理、加密、I/O处理等特定用途来定制。
[0031] “多处理器”计算机系统是具有多个逻辑处理器的计算机系统。多处理器环境以各种配置出现。在一给定配置中,所有处理器可以在功能上相同,而在另一配置中,一些处理器可能由于具有不同的硬件能力、不同的软件分配、或这两者而与其他处理器不同。取决于配置,处理器可以彼此高度耦合在单个总线上,或它们可以是松散耦合的。在一些配置中,各处理器共享中央存储器,在一些配置中,它们各自具有其自己的本地存储器,并且在一些配置中,共享和本地存储器两者都存在。
[0032] “内核”包括操作系统、系统管理程序、虚拟机、以及类似的硬件接口软件。
[0033] “代码”意味着处理器指令、数据(其包括常量、变量以及数据结构),或指令和数据两者。
[0034] “自动地”意味着使用自动化(例如,由在此讨论的特定操作的软件配置的通用目的计算硬件),与没有自动化相反。具体而言,“自动地”执行的步骤不是通过手在纸上或在人的脑中执行的,它们是用机器执行的。
[0035] 贯穿全文,使用可选的复数“(诸)”意味着存在所指示的特征中的一个或多个。例如,“(诸)浏览器”意味着“一个或多个浏览器”或等效于“至少一个浏览器”。
[0036] 无论何时引用了数据或指令,可以理解这些项配置计算机可读存储器,从而将其转换成与简单存在于纸上、人脑中相反的特定制品,或例如,作为线上的瞬时信号。
[0037] 操作环境
[0038] 参考图1,用于一实施方式的操作环境100可包括计算机系统102。计算机系统102可以是或不是多处理器计算机系统。操作环境可包括给定计算机系统中的一个或多个机器,它们可以群集在一起、客户机-服务器式连网、和/或对等式连网。
[0039] 人类用户104可以通过使用显示器、键盘、以及其他外围设备106来与计算机系统102进行交互,例如向web服务器142请求网页128。系统管理员、开发人员、工程技术人员、以及最终用户各自都是特定类型的用户104。代表一个或多个人的自动化代理也可以是用户104。在一些实施方式中,存储设备和/或联网设备可被认为是外围装备。图1中未示出的其他计算机系统,可以使用例如经由网络接口设备到网络108的一个或多个连接来与计算机系统102或与另一系统实施方式进行交互。在交互期间,用户通过键盘、鼠标、以及其他外围设备106和/或通过网络108连接提供输入120,并且用户通过例如显示器122、其他硬件124和/或网络连接接收输出数据。
[0040] 计算机系统102包括至少一个逻辑处理器110。与其他合适系统一样,计算机系统102还包括一个或多个计算机可读非瞬态存储介质112。介质112可以是易失性存储器、非易失性存储器、固定在适当位置的介质、可移动介质、磁性介质、光学介质、和/或其他类型的非瞬态介质(与诸如仅仅传播信号的电线等瞬态介质相对)。介质112可以是不同的物理类型。具体而言,诸如CD、DVD、记忆棒、或其他可移动非易失性存储器介质等的经配置介质114,在被插入或以其他方式安装时,可以在功能上变成计算机系统的一部分,使得它的内容可被访问以供处理器110使用。可移动经配置的介质114是计算机可读存储介质112的示例。计算机可读存储介质112的一些其他示例包括内置RAM、ROM、硬盘、以及不易于由用户104移动的其他存储设备。
[0041] 介质114由可由处理器110执行的指令116来配置;“可执行”在此以宽泛的意义来使用,以包括例如机器代码、可解释代码、以及在虚拟机上运行的代码。介质114还由数据118来配置,数据118是通过执行指令116来创建、修改、引用、和/或以其他方式使用的。指令116和数据118配置它们位于其中的介质114;当该存储器是给定计算机系统的功能部分时,指令116和数据118还配置该计算机系统。在一些实施方式中,数据118的一部分表示真实世界项,如产品特征、清单、物理测量、设置、图像、读数、目标、容量等。如本文讨论的,这样的数据也被转换,例如通过映射、截取、执行、挂起、询问、修改、显示、创建、加载、和/或其他操作。
[0042] 具有HTML页面128和一个或多个文档对象模型(DOM)树132中的对应的DOM元素130的一个或多个web浏览器126、其他软件134、以及附图中示出的其他项可以部分或全部驻留在一个或多个介质112内,从而配置这些介质。元素130(有时也被称为对象)可以具有相关联的属性值136。可显示的元素130一般具有相应的位置138,如相对于某一视口原点的位置。在一些情况下,一元素的位置取决于浏览器窗口的宽度以及浏览器呈现引擎。除了处理器110、可任选的外围设备106、介质112和可任选的显示器122之外,操作环境还可包括其他硬件124,诸如总线、电源和加速器等。
[0043] 给定操作环境100可包括向开发人员提供一组协同的软件开发工具的集成开发环境(IDE)140。具体而言,对于一些实施方式,合适的操作环境中的一些包括或帮助创建被配置成支持程序开发的 Visual 开发环境(微软公司的标记)。一些合适的操作环境包括 环境(Sun Microsystems有限公司的标记),并且一些操作环境包括利用诸如C++或C#(“C-Sharp”)等语言的环境,但本文的教导适用于各种各样的程序设计语言、程序设计模型、以及程序,以及本质上适用于软件开发领域之外的使用浏览器的努力。
[0044] 一些项在图1中以轮廓形式示出以强调它们不是所示操作环境的必需部分,但可以与在此讨论的操作环境中的项进行互操作。在任何附图或任何实施方式中,并不能得出不是轮廓形式的项就一定需要的结论。
[0045] 系统
[0046] 图2示出适用于一些实施方式的体系结构。记录器浏览器202接收输入,该输入在元素级130由交互活动测试代码204映射以提供与一个或多个播放器浏览器206的对应交互。具体而言,相关记录器元素208(其是记录器浏览器中的元素130,指定用户输入120针对记录器浏览器)被映射到对应的相关播放器元素210,并且该用户输入被应用于该相关播放器元素以在模拟针对该记录器浏览器的输入的指导下测试它们的交互行为。在本文讨论的各实施方式中提供了用于截取、阻塞、应用、模拟以及以其他方式管理用户输入的机制212。
[0047] 一些实施方式创建用户与记录器浏览器的交互的规范化记录214,并且一些实施方式通过读取用户-浏览器交互的这些规范化记录214并按照这些规范化记录进行动作来控制播放器浏览器行为。规范化记录214也被称为用户-浏览器交互记录214。诸如列表、表、数组、树、编码和/或文件等跨浏览器结构220可以保持一系列一个或多个交互记录214。
[0048] 在一些实施方式中,可以测试脚本语言216代码(例如, 代码)在网页中的交互行为。用户将用户输入120序列针对记录器浏览器,测试代码204通过相关记录器元素自动地将这些输入映射到相关播放器元素,并且将这些输入和元素记录在记录214中。测试代码还自动地读取这些记录214并将这些输入应用于相关播放器元素,使得可以在一个或多个机器上的多个播放器浏览器中测试播放器脚本语言行为和其他行为,而无需用户手动地将该输入重复到每一浏览器中或对每一测试序列和每一浏览器使用测试场景专用脚本。
[0049] 在一些实施方式中,交互活动测试代码204向用户提供允许输入实况或脚本化命令224的命令窗口222。例如,脚本语言语句226和/或调用DOM树元素上的方法的语句226可作为命令输入。命令224还可被用来从记录加载DOM树状态,在用户-浏览器交互记录214中步进并将输入应用于各元素,反转解释记录214的次序,暂停记录214的解释,等等。命令224还可被用来保存或检索可通过将记录214与视频或静止图像进行关联的标记帧来与特定记录214的解释相同步的实况视图、屏幕截图、或视频剪辑。一些实施方式可检查和/或改变DOM元素或 变量的状态(例如,改变DOM元素上的样式属性),
并可以跨播放器浏览器和阅读器浏览器实例来传播这些改变。
[0050] 给定的实施方式可包括一个或多个类型的一个或多个系统102(也称为设备、机器)。例如,系统102可被看作属于以下设备类别218中的一个或多个:工作站设备(例如,台式计算机、服务器计算机)、便携式设备(例如,膝上型计算机)、嵌入式设备(例如,嵌入在汽车、飞机、船舶以及其他交通工具中的系统)以及电话设备(例如,蜂窝电话、智能电话)。交互活动测试代码不一定在每一可用设备类别中实现,所使用的类别可以随实施方式而变化。
[0051] DOM元素与特定网页相关联。即,某一网页将被加载到记录器浏览器202,记录214将引用该网页的元素130。同一网页(在加载到不同浏览器的网页是相同的程度上)将被加载到播放器浏览器206,使得记录214的回放可以将输入应用于相同的DOM元素。例如,一些实施方式捕捉造成到新页面的导航的操作的目的地URL。在DOM元素调和在不同情况下失败时,该数据可被用于强制浏览器之间的重新同步。因而,如果用户点击记录器浏览器中的元素并且这造成到另一页面的导航,一实施方式可以在它未能定位要在播放器浏览器中点击的对应元素的情况下后退以导航到该目的地。将所有浏览器迫使到共同的URL是可以被显式地执行的用户操作。当在播放器浏览器中定位并应用以下讨论的步骤失败的情况下,一些实施方式支持这样的导航或与交互记录相关联的另一指定的后退结果或操作。
[0052] 参考图1和图2,如本文所讨论的,一些实施方式提供一种包括具有逻辑处理器110和存储器介质112的计算机系统102或其他设备的跨浏览器交互活动测试系统,存储器介质112由电路、固件和/或软件配置以将用户在记录器浏览器处指示的输入转换成一个或多个播放器浏览器中的元素级对应的模拟输入的记录214。具有网页128的文档对象模型元素130的记录器浏览器202驻留在本地存储器(RAM和/或另一存储器介质)中。跨浏览器结构220驻留在至少一个本地存储器中。跨浏览器结构包括至少一个记录214,并且因而指定文档对象模型元素130和用户输入120。交互活动测试代码204驻留在至少一个本地存储器中。该交互活动测试代码被配置成在各浏览器文档对象模型元素之间定位与该跨浏览器结构中指定的元素相对应的元素,并且还被配置成将该用户输入应用于所定位的元素。该代码还存储指定该元素和该用户输入的记录214,使得同一交互可被应用在播放器浏览器中。该跨浏览器结构可以驻留在盘上,并且被以逐步的方式(例如一次一个记录
214)“拉”到存储器中。
[0053] 在一些实施方式中,跨浏览器结构220指定具有对应的用户输入120的多个文档对象模型元素130。在一些实施方式中,对于文档对象模型元素中的至少一个元素,该跨浏览器结构在记录214中包括以下项目:该元素的对象名(在此又称为“标签名”)、元素ID属性值(或另一元素ID,即在单个浏览器中唯一地标识该元素的一种方式)、该元素的DOM树位置。在一些实施方式中,对于用户输入中的至少一个,跨浏览器结构记录214包括以下项目:该用户输入的动作类别、该用户输入的坐标位置。坐标位置可以相对于该页面(视口原点)或相对于该输入所针对的对象/DOM元素。
[0054] 在一些实施方式中,该系统包括驻留在本地存储器中的脚本语言语句226序列。该序列包含以诸如 (Sun Microsystems的标记)、VBScript(微软公司的标记)
或 (Adobe Systems有限公司的标记)等脚本语言216编写的指定文档对象
模型元素和对应的用户输入的语句。在一些实施方式中,该系统包括以脚本语言或诸如C#或C++等较低级语言编写的调用文档对象模型元素所展示的的方法的语句226的序列。
[0055] 在一些实施方式中,交互活动测试代码204包括命令窗口222,并且该交互活动测试代码被配置成执行以下命令窗口操作中的至少一个。
[0056] 记录(Log)命令214通过记录当前用户输入和该用户输入将其作为目标的浏览器文档对象模型元素来将实况交互记录到跨浏览器结构220。
[0057] 编辑(Edit)命令224基于脚本语言和/或其他语句226在浏览器文档对象模型元素和/或标记语言中进行实况编辑。
[0058] 模拟(Mimic)命令224模拟用户输入手势,例如“点击按钮foo”。
[0059] 获取状态(Get-State)命令224检索网页状态信息,如DOM树元素和/或与该网页相关联的其他数据,例如‘元素x的位置是什么’、‘捕捉屏幕并写入到临时目录’。
[0060] 选择播放器(Select-Players)命令224将命令的执行限于正在回放跨浏览器结构的用户-浏览器交互记录序列的一组一个或多个播放器浏览器206的指定的适当子集。例如,可以执行一命令或更改仅特定于单个浏览器的状态以使它与其他浏览器一致。
[0061] 诸如暂停、反转、停止、快进以及播放等各个记录回放命令224执行记录回放操作来控制交互记录214的播放器浏览器中的互操作。例如,可以命令一系统‘暂停10秒’、‘关闭所有播放器窗口’,等等。
[0062] 在一些实施方式中,交互活动测试代码204被配置成在多个用户输入被应用于跨浏览器结构中指定的多个浏览器文档对象模型元素时拍摄浏览器的屏幕截图和/或记录该浏览器的视频。一些实施方式将标记帧插入该浏览器的视频,从而将视频剪辑与诸如将用户输入应用于文档对象模型元素等本地事件进行同步。除屏幕截图或简单地记录交互之外,一些实施方式允许捕捉该时间点处的页面源或DOM的某种其他表示,和/或写入任意日志细节。
[0063] 在一些实施方式中,存在着诸如人类用户I/O设备(屏幕、键盘、鼠标、平板、话筒、扬声器、运动传感器等)等外围设备106以与一个或多个处理器110和存储器进行有效通信。具体而言,可存在光标定位设备,如鼠标、笔、轨迹球、指示笔、指尖敏感触摸屏等。然而,一实施方式还可被配置成使得没有人类用户104与该实施方式直接交互;软件进程可以是用户104。
[0064] 在一些实施方式中,该系统包括由网络连接的多个计算机。连网接口装备可以使用诸如分组交换网络接口卡、无线收发机或电话网络接口等将存在于计算机系统中的组件来提供对网络108的接入。然而,一实施方式还可以通过直接存储器存取、可移动非易失性介质或其他信息存储-检索和/或传输方法进行通信,或者计算机系统中的一实施方式可以在不与其他计算机系统进行通信的情况下操作。
[0065] 在一些实施方式中,多浏览器交互活动测试系统包括至少一个逻辑处理器110以及与逻辑处理器进行有效通信的至少一个本地存储器。具有记录器文档对象模型元素130的记录器浏览器202驻留在本地存储器中。具有播放器文档对象模型元素130的播放器浏览器206驻留在本地存储器中。交互活动测试代码204驻留在至少一个本地存储器中。即,记录器浏览器202、播放器浏览器206以及交互活动测试代码204可驻留在与一个或多个逻辑处理器进行有效通信的一个或多个存储器中;在该上下文中,与处于某一其他设备中相对,“本地”暗示与逻辑处理器处于同一设备中。除非另外指明,在一权利要求中对逻辑处理器的引用意味着存在一个或多个逻辑处理器。
[0066] 交互活动测试代码204被配置成在播放器文档对象模型元素之间定位与相关记录器元素相对应的相关播放器元素。该相关记录器元素是作为对记录器浏览器的用户输入的目标的记录器文档对象模型元素。交互活动测试代码204还被配置成将该用户输入应用于该相关播放器元素。
[0067] 在一些实施方式中,例如,交互活动测试代码204的一部分与记录器浏览器一起驻留在第一机器上,交互活动测试代码204的另一部分与播放器浏览器一起驻留在第二机器上,并且交互活动测试代码204的一类似部分与另一播放器浏览器一起驻留在第三机器上。与其他系统102一样,特定机器可以是单处理器设备或多处理器设备。
[0068] 更一般地,一特定实施方式中可存在一个或多个播放器浏览器。在一些实施方式中,记录器浏览器、播放器浏览器以及交互活动测试代码全驻留在同一设备上。在其他实施方式中,记录器浏览器驻留在具有第一逻辑处理器和第一本地存储器的第一设备上,播放器浏览器驻留在具有第二逻辑处理器和第二本地存储器的第二设备上,并且交互活动测试代码的至少一部分驻留在这些设备中的每一个设备上。例如,一些实施方式使用Macintosh或其他OS X操作系统机器上的浏览器和微软Windows 或其他微软Windows操作系统机器上的浏览器,使得记录器浏览器和至少一个播放器浏览器正在运行并测试于不同的操作系统下。
[0069] 在一些实施方式中,允许一个或多个播放器浏览器。但是,在一些情况下,该实施方式包括至少一个附加播放器浏览器中的至少一个附加相关播放器元素,并且交互活动测试代码被配置成将用户输入应用于这些附加相关播放器元素中的至少一个。在这样的实施方式中,存在两个或更多个播放器浏览器。例如,图5示出具有通过网络与记录器浏览器进行通信的三个播放器浏览器的实施方式。
[0070] 对于用于管理用户输入的机制212,现在参考图3和4以及图1和2,一些实施方式包括位于浏览器窗口或其他显示区域402前面的透明窗口302。使用该透明窗口,交互活动测试代码204截取来自用户输入设备(外围设备106)的针对该浏览器的信号,诸如来自鼠标、笔和/或触摸屏的信号。播放器浏览器前面的透明窗口所截取的信号可在交互活动分析之后被丢弃或被传递到相关元素。在一些情况下,跟随者浏览器不是由实况直接输入(用户->跟随者浏览器)控制的,而是经由领导者接收其输入(用户->领导者浏览器->系统信号->跟随者浏览器)。直接控制跟随者浏览器的尝试,并非经由领导者浏览器控制该跟随者浏览器,可以通过丢弃对该跟随者浏览器的直接输入而阻塞。在一些情况下,跟随者浏览器既直接又间接地接受输入。在一些情况下,可以分析记录器浏览器前面的透明窗口(例如,不可见或隐藏的窗口)所截取的信号来标识该信号所针对的相关记录器元素208。在操作中,一些实施方式通过查看相关联的播放器DOM来将相关记录器元素和相关播放器元素进行关联,其中不保证这些元素是相同的。所以,一些实施方式的一个方面是将记录器DOM元素与相同的播放器元素进行关联。另一方法是将浏览器的窗口句柄“钩住(hook)”,这将不需要透明窗口。因而可以在Windows API级截取到现有窗口的所有消息。更一般地,一些实施方式在来自操作系统的用户输入事件到达浏览器本身之前截取这些事件。
[0071] 在一些实施方式中,使用元素ID属性值308来指定诸如相关记录器元素208和/或相关播放器元素210等元素130。元素ID属性值不必一定存在于不担当相关元素的元素上。在每一页面128中,并非所有相关元素都一定具有ID属性,所以在一些情况下也可以由其他机制来指定相关元素。
[0072] 在一些实施方式中,例如,该元素可以由它在DOM树中的位置310来指定。位置可以通过列出从根到该元素的路径来指定。例如,“113”可意味着“在根处开始,沿最左侧链路,沿最左侧链路,沿自左侧起第三条链路,到达该元素”。作为另一示例,位置可以通过对“在根处开始,遍历第一
元素,遍历该元素内的第二
[0079] 动作类别604指定用户输入设备信号类别。输入可被当作例如窗口动作612、鼠标动作614、键盘动作616或其他种类的动作信号618。
[0080] 窗口动作612属于浏览器界面窗口上的用户动作,如在屏幕上移动该窗口的位置、在屏幕上调整该窗口的大小、将该窗口最小化到系统托盘、在屏幕上最大化该窗口的区域等动作。
[0081] 鼠标动作614可属于使用鼠标、笔、触摸屏或类似输入设备进行的用户动作。或者,鼠标动作614可只属于使用鼠标采取的动作,并且其他输入设备可以使用其他类别604来处理或可被忽略。除非另外指明,鼠标动作属于用鼠标和/或用任何其他光标定位/定点设备(笔、触摸屏、轨迹球、触摸垫等)采取的动作。在一些实施方式中,可能的鼠标动作包括以下动作中的一个或多个:鼠标悬停(在鼠标最初进入元素的屏幕领域时,例如在鼠标驱动的光标404最初进入屏幕区域406时);鼠标移出(在鼠标离开元素的领域时);鼠标移动(在鼠标在元素的领域内移动时);鼠标按下(当鼠标按钮在元素的领域上方按下时);鼠标释放(鼠标按钮在元素的领域上释放);鼠标点击(在鼠标按下+鼠标释放组合发生在同一位置上方时);鼠标双击。一些实施方式只实现上述鼠标动作中的一些,而一些实施方式实现其他鼠标/定点设备动作。
[0082] 键盘动作616属于使用机械或虚拟(屏上)键盘进行的用户动作。在一些实施方式中,可能的键盘动作包括以下动作中的一个或多个:键按下、键释放、键入(快速按下-释放组合)。
[0083] 在一些实施方式中,距离214(例如,元素指定器602和动作类别604)与诸如浏览器显示的屏幕截图622和/或视频剪辑624等像素数据之间存在关联620。例如,文件名、统一资源标识符(URI)和/或其他像素数据标识符可被存储在记录214中。在一些实施方式中,标记帧626例如通过在视频剪辑帧序列元数据中嵌入URI、文件名和偏移量、或其他记录214标识符来插入到视频剪辑624中。标记帧可被用来将记录214与视频帧进行同步,使得特定帧与特定交互记录214的解释一起显示在播放器浏览器中。
[0084] 在一些实施方式中,跨浏览器结构包括一个或多个规范化记录214,每一记录具有相关元素208的元素ID属性值308和与以下鼠标动作614中的至少一个相对应的动作类别604值:鼠标点击、鼠标悬停、键盘。在一些实施方式中,跨浏览器结构包括一个或多个规范化记录214,每一记录214具有相关元素208的对象名608(又称为对象ID、对象类型名,例如
元素、

元素等)、相关元素208的DOM树位置310、与以下动作中的至少一个相对应的动作类别604值:鼠标点击、鼠标悬停、键盘动作616。当然,基于本文的描述的其他变型也是可能的。

[0085] 方法
[0086] 图7和图8在流程图700和800中示出了一些方法实施方式。在一些实施方式中,附图中示出的方法可以自动执行,例如由播放器浏览器206和交互活动测试代码204在只需要很少或不需要同时(实况)用户输入的情况下回放规范化记录214的序列。除非另外指明,各方法还可以部分地自动执行并部分地手动执行。某些步骤可以自动地完成,而不管哪些步骤被具体描述为是自动的。在一给定实施方式中,一方法的零个或更多个所示步骤可以重复,但可能操作不同的参数或数据。各流程图不是相互排斥的,一给定方法可包括例如图7中示出的步骤、图8中示出的步骤、或来自每一附图的步骤等。也可包括任一附图中都未示出的步骤。一实施方式中的步骤可以按与在流程图中所展示的自顶向下次序不同的次序来完成,如由该语句并由流程图循环设施所指示的。各步骤可以串行执行、以部分重叠的方式执行、或完全并行执行。遍历流程图以指示在方法期间执行各步骤的次序可以随该方法的一次执行到该方法的另一次执行而变化。该流程图遍历次序也可随一个方法实施方式到另一方法实施方式而变化。假定所执行的方法是可操作的并且符合至少一个权利要求,则各步骤还可被省略、组合、重命名、重组、或以其他方式与所示流程分开。
[0087] 在此提供各示例以帮助示出本发明技术的各方面,但本文中给出的各示例不描述所有可能的实施方式。实施方式不限于在此提供的具体实现、安排、显示、特征、方法、或场景。给定实施方式可包括例如附加或不同的特征、机制和/或数据结构,并且能以其他方式与在此提供的示例分开。
[0088] 在截取步骤702期间,一实施方式阻塞、重定向或以其他方式截取用户输入120。步骤702可以例如通过将透明窗口302定位在浏览器前面、通过插入706事件处理程序304和/或通过其他机制来实现。
[0089] 在标识步骤708期间,一实施方式标识相关元素208/210,即用户输入所针对的元素。步骤708能以各种方式来实现。例如,可以将鼠标动作屏幕位置与元素屏幕区域相匹配以标识目标元素。作为另一示例,可以插入706事件处理程序以截取事件,实际上让原始事件处理程序确定哪一元素是目标并随后接入该确定过程以标识相关元素。作为又一示例,可以通过将方法306插入到元素上使得DOM树132成为增强DOM树314,所插入的方法被配置成引起一事件,发送消息或以其他方式通知交互活动测试代码204所述元素何时接收到输入。
[0090] 在记录创建步骤710期间,一实施方式创建交互记录214,例如通过将图6中示出的某些项的值写入介质112中。在一些实施方式中,创建710记录214包括在像素数据与诸如元素指定器602和/或动作类别604等其他项之间进行712关联。在一些实施方式中,创建710记录214包括将交互记录值记录714在诸如非易失性介质等介质112中。
[0091] 在输入丢弃步骤716期间,一些实施方式丢弃输入,例如它们在接收到特定输入之后丢弃对浏览器的输入。例如,在不改变具有用户输入焦点的DOM元素的情况下,在将该元素130设为焦点元素的输入之后,仅仅轻微移动光标的输入可被丢弃。一些实施方式丢弃关于在元素的边界内的鼠标移动的输入。这可频繁发生,因为网页很少具有将在这些情况下改变页面的事件处理程序。因此,作为优化,一实施方式可以丢弃这种移动;还可以提供一模式以禁用这种丢弃行为。在一些配置中,哪一元素具有用户焦点是不重要的,例如当在搜索文本框中进行点击的情况下,它具有输入焦点但鼠标仍然可以在页面的其余部分四处移动。在这样的配置中,更相关的事情不是具有输入焦点的元素不改变,而是没有元素改变。
[0092] 在屏幕截图拍摄步骤718期间,一些实施方式将像素数据存储在介质中,包括持有记录器浏览器所配置的显示画面的一部分或全部的屏幕截图的文件或其他数据结构。诸如时间、浏览器ID以及用户名等元数据可以与该屏幕截图相关联。
[0093] 在视频剪辑记录步骤720期间,一些实施方式将像素数据帧存储在介质中,包括持有记录器浏览器所配置的显示画面的一部分或全部的视频剪辑的文件或其他数据结构。诸如屏幕截图的元数据等元数据可以与该视频剪辑相关联。在一些实施方式中,一个或多个标记帧626被插入722到视频剪辑中,使用视频剪辑帧序列中的特定点来标识特定交互记录214。在一些实施方式中,记录视频(屏幕捕捉)或所选择的屏幕截图便于与其中播放器浏览器之一是基于的系统一起工作。开发人员可以用本地浏览器并排查看该基于云的浏览器的交互活动。一种技术是将本地交互活动与云交互活动的视频或屏幕截图表示并置。
[0094] 在询问步骤724期间,一实施方式询问元素130的位置、样式、所存在的属性、属性值和/或其他特性。可以使用用于询问元素的常见机制。一些实施方式允许(并且一些实施方式需要)开发人员在询问浏览器中的元素之前冻结该浏览器。在询问之后,可以恢复挂起的操作以使用对该浏览器的附加输入继续交互活动测试。在一些实施方式中,询问之后是状态保存步骤726,其中通过询问获取的浏览器元素状态被保存在介质112中,从而例如允许从结构220中对它们进行后续检索。
[0095] 在日志记录步骤728期间,用户与浏览器之间的实况交互被记录在跨浏览器结构220中,例如作为交互记录214的序列。
[0096] 在显示步骤730期间,一实施方式显示一个或多个浏览器。在一些实施方式中,记录器浏览器202与播放器浏览器206被一起显示在单个屏幕上,如图4所示。在一些实施方式中,记录器浏览器被显示在一个设备上而至少一个播放器浏览器被显示在不同的设备上。例如,图5示出了浏览器被显示在四个设备上的配置。步骤730可以使用常见的用户界面机制来完成。
[0097] 在命令输入步骤732期间,用户使用命令窗口222来将一个或多个命令224输入到交互活动测试代码204的用户界面。
[0098] 在传送步骤734期间,规范化记录214被通过网络或其他通信链路传送到播放器浏览器。在一些实施方式中,在将活动回放到远程播放器浏览器中时执行传送步骤734。
[0099] 在应用步骤736期间,用户输入被应用于元素。例如,可通过允许播放器在不存在交互活动测试代码204的情况下通常将做的那样创建系统级事件来将用户输入120应用于记录器浏览器中的元素,除非输入的规范化记录204是供播放器浏览器使用的。随后可以通过基于规范化记录214生成系统级事件来将同一用户输入120应用于播放器浏览器中的元素。应用步骤742不一定需要将用户输入应用于领导者播放器;可以仅仅是截取该输入事件并让其通过。即,不一定主动地应用用户输入,而可以改为被动地应用该输入。
[0100] 在记录接收步骤802期间,一实施方式从网络连接、共享介质112或其他传输机制接收交互记录214。例如,一实施方式可以接收802从远程网络节点传送734的记录214,可以接收802记录714在硬盘驱动器上的记录,或可以接收802由仍然在运行的记录器浏览器置于存储器流中的记录。
[0101] 在读取步骤804期间,一实施方式读取一个或多个交互记录并解析它们以找出诸如元素指定器602和动作类别604等值。
[0102] 在定位步骤806期间,一实施方式定位相关元素,如与相关记录器元素208相对应的相关播放器元素210。步骤806可以使用各种确定808-814来实现。例如,在元素ID确定步骤808期间,在相关记录器元素具有将它与页面128的其他元素相区别的ID属性值308的情况下是有用的,步骤806可以通过找出(例如,通过索引访问或树遍历)播放器浏览器中的具有同一ID属性值的元素来完成。另外,在树位置确定步骤810期间,可以使用相关记录器元素在DOM树中的位置310,例如以对DOM树的指定的遍历期间遇到的序数元素的形式或作为从根开始的指示在每一居间元素处沿着哪一条树链路的指定路径所到达的目的地元素。在确定步骤812期间,使用属性值的标识集合312来测试播放器DOM树中的每一可能的元素,直至定位了相关播放器元素(具有值的相同集合312值的元素)。在视图位置确定步骤814期间,在一些实施方式中,也可以使用基于相对于视口的位置的元素近似610,例如通过基于鼠标坐标和屏幕区域或通过由DOM元素将页面平铺到(titling)屏幕区域中来进行评估。
[0103] 在语句接受步骤816期间,一实施方式接受并操作语句226,如脚本语言216语句226或C#语句226。语句226可以例如通过命令窗口222或在交互记录214的序列内来被接受。一些实施方式对元素的记录以及被应用于这些元素的动作起作用。这些实施方式找出每一元素并将动作应用于该元素。元素标识和应用该动作的指令两者都可以是脚本的一部分。例如,脚本语句可以是“将点击事件应用于具有id=“99”的元素”。
[0104] 在DOM修改步骤818期间,一实施方式修改DOM树中的元素130和/或修改诸如元素的数量和位置等DOM树特性。可以使用用于修改DOM元素和DOM树的常见机制。
[0105] 在冻结-促进步骤820(又称为冻结步骤820)期间,一实施方式冻结或帮助冻结浏览器202/206中的DOM元素130的状态。例如,步骤820可包括将 代码、层叠样式表代码或另一脚本语言216的执行挂起822。步骤820可包括使用例如断点或HALT指令来将浏览器202/206执行挂起。步骤820可包括将浏览器202/206或浏览器202/206设备与web服务器142之间的通信挂起826,例如通过停止AJAX(异步 和XML)
和使用XML、HTML、HTTP、TCP/IP和/或其他常见格式和协议进行通信的其他过程。步骤820可包括将系统级事件的生成挂起828以模拟对播放器浏览器的直接用户输入。一些实施方式支持在满足一个或多个指定交互活动条件时进行自动冻结,例如“在将鼠标悬停在具有ID=“menu(菜单)”的元素上方时冻结”或“在具有ID=menu的元素的CSS背景色变为RED(红)时冻结”。具体而言,一些实施方式支持在DOM以某种指定方式改变时设置的“改变”或“数据”断点。
[0106] 在记录解释步骤830期间,一实施方式解释播放器浏览器206中的交互记录214。从一实施方式的观点看,步骤830包括读取用户-浏览器交互记录214,定位806播放器浏览器中的相关元素,并将用户输入应用736到该相关元素。在一些实施方式中,步骤830还包括在应用了用户输入之后显示730播放器浏览器。从用户的观点看,步骤830可以是诸如播放832交互序列、暂停834播放、一次一个(记录214)地在交互中步进836、和/或反转
838回放以便以与交互的原始记录序列相反的次序来示出交互等步骤的一部分或为这些步骤提供上下文。
[0107] 在状态检索步骤840期间,一实施方式从介质112中检索网页状态信息,如先前在用户-浏览器交互的记录期间保存726的DOM元素值。
[0108] 在置位步骤842期间,一实施方式使用检索到的840状态消息来将浏览器置于特定状态。该状态通常将是通过重复用户-浏览器交互序列而可能将浏览器带入的状态,但一些状态还可包括通过直接修改818DOM元素或DOM树而产生的值。在一些实施方式中,可通过执行步骤序列或通过简单地将所有DOM元素和Javascript执行置于记录器播放器所指示的点处来将浏览器置于该状态。
[0109] 在显示步骤844期间,一实施方式在显示器122上示出DOM元素和/或其他DOM树数据。可以使用常见的用户界面工具来示出844数据。
[0110] 在子集解释步骤846期间,指定语句226和/或指定交互记录214被用于先前选择的播放器浏览器的一适当子集。例如,若干播放器浏览器中的每一个中的值可以被单独地修改818以在回放期间同时测试若干情况。
[0111] 在屏幕截图显示步骤848期间,先前拍摄718并存储的屏幕截图像素数据被显示在播放器浏览器的窗口中或附近。
[0112] 在视频剪辑显示步骤850,先前记录720的视频像素数据被显示在播放器浏览器的窗口中或附近。通过使用例如关联620和/或标记帧626,步骤848和850可以与交互记录214的解释830同步。
[0113] 在光标动画步骤852期间,一实施方式在播放器浏览器窗口中模拟某种用户控制的光标移动。例如,如果记录214引用元素A并且结构220中的下一记录214引用元素B,则该实施方式可以生成从元素A的屏幕区域406的中心到元素B的屏幕区域的中心的模拟光标移动。在一些实施方式中,事件处理程序通过捕捉“事件”并对事件进行响应来“模拟”事件。
[0114] 在播放步骤854期间,一实施方式使用交互记录214的解释830、实况用户输入120的执行和/或命令224和/或语句226的执行来播放播放器浏览器。即,步骤854可包括播放器浏览器的混合模式操作,其中所记录的输入和实况输入被混合地提交给播放器。
[0115] 在步骤854期间,一些实施方式调用增强DOM树314中定义的插入的方法316,以就所调用的方法所依附的元素130的情况或内容来更新交互活动测试代码204。可以使用常见的方法调用机制。注意,一些实施方式捕捉事件和与事件相关联的元素。为了在播放器浏览器中将事件播放回同一元素,一些实施方式在播放器浏览器中的该元素的位置处模拟系统事件。增强DOM不一定被用于每一实施方式中。一些实施方式通过浏览器(而非系统)来模拟事件,所以不需要增强DOM树,相反该实施方式遍历该树并将该事件播放到相关对象。
[0116] 在步骤854期间,一些实施方式将光标404(例如,虚拟光标)咬合到与目标元素相对应的屏幕位置。考虑仅仅记录鼠标移动和键盘输入而不如本文所述将这些用户输入与DOM元素进行相关的软件。如果所记录的输入被重放到元素因例如布局引擎中的差异而具有有点不同的屏幕区域的不同浏览器中,则不同的元素可以在回放期间而非在记录期间很好地接收该输入。使用本文描述的实施方式,作为对比,相同的元素可以接收输入事件。在回放期间,在按元素的基础上处理输入的视觉指示可以是光标逐元素区域地咬合(不连续地跳跃/移动)而非如它在视频记录中那样连续地移动。在一些实施方式中,咬合步骤是在将活动回放到播放器浏览器中时的任选步骤。在一些配置中,光标还可被动画化852。
[0117] 图9示出一些实施方式的另一视图。开发人员选择记录器浏览器202并选择一个或多个播放器浏览器206。交互活动测试代码例如通过在安装机制212之后阻塞或以其他式截取702直接用户输入来禁用播放器浏览器上的事件。事件306发生在记录器浏览器上,并且交互活动测试代码204确定该事件是窗口事件902、鼠标事件904还是键盘事件906。
[0118] 捕捉908窗口事件,并且例如将窗口对象记录在代码所创建710的规范化记录214中。在仅限记录的配置中,控制循环回去以等待下一记录器浏览器事件306。在记录并播放配置中,读取804记录214并且将窗口事件应用736于播放器浏览器相应窗口。
[0119] 同样地捕捉910鼠标事件并且标识708作为该鼠标事件的目标的对象(元素)。在仅限记录的配置中,控制循环回去以等待下一记录器浏览器事件306。在记录并播放配置中,读取804记录214并且当在播放器浏览器中定位806了相关对象之后将鼠标事件应用
736于这些相关对象。
[0120] 同样地捕捉912键盘事件并且标识708作为该键盘事件的目标的对象(元素)。在仅限记录的配置中,控制循环回去以等待下一记录器浏览器事件306。在记录并播放配置中,读取804记录214并且当在播放器浏览器中定位806了相关对象之后将键盘事件应用
736于这些相关对象。
[0121] 在一些实施方式中,开发人员可以冻结820记录器浏览器和/或播放器浏览器的状态。可以在解除浏览器的冻结并继续与所选对象进行交互之前询问724这些对象。交互可包括对记录器浏览器的直接输入和/或播放器浏览器中的模拟匹配交互。
[0122] 在应用步骤736期间,一些实施方式生成系统级事件,从而封装诸如窗口动作612、鼠标动作614或键盘动作616等动作。与常见的系统级事件不同,响应于规范化记录
214或来自记录器浏览器交互活动测试代码的其他通信而非针对隔离的浏览器的用户输入,所生成的系统级事件发生。然而,可以在所生成的系统级事件中使用与常见系统级事件相同的事件数据格式。
[0123] 至少为方便起见,可以通过关于两个基本回放场景的主功能来表征一些实施方式。在一个场景中,一实施方式针对一实际浏览器实例工作并与它进行交互。在第二个场景中,一实施方式使用其他数据对回放体验进行仿真;不执行浏览器代码。对于后一场景,情况可能是用户仅仅观看一视频,该视频中浏览器正在执行,但该浏览器当前并未执行。在另一示例中,一实施方式显示所捕捉的屏幕截图并还可以将假的鼠标光标动画化以模拟用户交互。
[0124] 在第一场景中,使用实况浏览器,可能难以容易地在时间上向后移动来进行回放。为此,在实况回放期间,诸如当前DOM/标记源等细节将必须记录在持久介质中(例如,在存储器中或在盘上)。在给定配置中,存储和数据传输限制可使这样的记录不合需要或不实际。
[0125] 在第二场景中,关于‘解释每一用户-浏览器动作’的概念不一定是相关的。相反,有在回放序列中的位置的概念,以及有允许一实施方式咬合适当的显示/回放状态的数据,可能带有某种光标动画。
[0126] 一给定实施方式可以聚焦于第一场景(实况浏览器),或第二场景,或可以支持这些场景中的每一个。一些实施方式支持基于持久存储的DOM/其他状态来咬合实况播放器回放。一些实施方式支持按以下方式之一解释所记录的用户-浏览器交互序列中的每一用户-浏览器交互:通过读取与该交互相关联的所捕捉的数据,执行光标的任何动画,并显示示出在记录时所呈现的页面的图形;通过回放来自示出在记录时发生的用户-浏览器交互的所记录的视频的序列。在回放时前进涉及执行实况用户输入手势或解释所记录的交互活动手势。一些实施方式只处理暂停、停止以及反转模式,并且不支持恢复浏览器状态。一些实施方式采取所记录的序列,而非实况页面。暂停可以例如通过断点或通过暂停按钮来完成。其他实施方式支持恢复状态。
[0127] 一些实施方式支持在序列结构220中设置断点以指定暂停不是由用户手势而是通过在回放脚本中指定暂停点来发起的。一些实施方式支持回放‘继续’或继续进行手势,例如通过命令窗口222。其他命令224可以将脚本(例如,结构220)持久存储在存储(介质112)中并重载它们来进行解释。一些实施方式支持使用脚本结构220中的断点来将浏览器带到指定状态。脚本可被暂停,并且实况命令窗口222可用于暂停状态中,例如以将浏览器带到指定状态并编辑实况DOM树。除编辑实况DOM树之外,用户可以执行任何其他命令224,并且可以在另一工具中开始 调试体验,和/或可以与该页面进行交互以更改它而不记录这些交互。
[0128] 上述步骤及其相互关系在下文中结合各种实施方式来更详细地讨论。
[0129] 在一些实施方式中,利用至少一个系统102或设备提供了浏览器交互活动记录过程,该系统或设备具有至少一个显示器122、至少一个逻辑处理器110以及在操作上与逻辑处理器和显示器进行有效通信的至少一个存储器介质112。
[0130] 一些过程包括自动地截取702到浏览器的用户输入。在一些实施方式中,截取步骤包括将透明窗口定位704在浏览器窗口之前以接收针对该浏览器的用户输入设备信号。在一些实施方式中,截取步骤包括插入706被配置成截取由用户输入设备信号所产生的事件的事件处理程序304,该事件处理程序在web服务器上的网页的原始版本中不存在。一些实施方式重写页面128以实现截取702;在其他实施方式中,重写页面是可任选的。在一些实施方式中,事件处理程序304可以经由DOM挂钩来添加,而无需重写页面。
[0131] 一些过程包括标识708相关元素,即浏览器中被配置成对所截取702的用户输入进行响应的文档对象模型元素。
[0132] 一些过程包括创建710指定所标识的相关元素和用户输入的跨浏览器结构220(或单独的用户-浏览器交互记录214)。
[0133] 一些过程包括将跨浏览器结构记录714在计算机可读存储介质中,并且具体而言,将记录214记录在诸如硬盘等非易失性介质中。
[0134] 在一些实施方式中,该设备具有光标定点设备。在标识了相关元素并截取了针对该元素的用户输入之后,一些过程丢弃716后续光标定点设备用户输入,直至光标移动到被分配给相关元素130的屏幕领域(区域406)的外面。
[0135] 在一些实施方式中,在播放器浏览器中生成系统级事件。一些实施方式调用增强DOM树314中定义的方法316。其他实施方式不一定具有增强DOM树,但改为直接调用非修改DOM树上的onClick处理程序304。一些实施方式在浏览器插件/附加件模型中执行。
[0136] 在一些实施方式中,创建步骤710创建具有相关元素的元素ID和动作类别的跨浏览器结构220(或单独的记录214)。
[0137] 一些实施方式在计算机可读存储介质中作出关联620,关联620将跨浏览器结构220(或单独的记录214)与以下各项中的至少一个进行关联:浏览器的屏幕截图622;在多个用户输入被应用于多个浏览器文档对象模型元素时浏览器的视频剪辑624;网页的源代码的至少一部分的数据606表示;网页的文档对象模型树的至少一部分的数据606表示。
[0138] 一些实施方式提供用数据和指令配置的计算机可读存储介质,这些指令在被至少一个处理器110执行时使该至少一个处理器执行一种用于跨浏览器交互活动测试的过程。
[0139] 在一些实施方式中,该过程包括从跨浏览器结构220自动地读取804用户-浏览器交互记录214。用户-浏览器交互记录指定文档对象模型元素和用户输入。该过程定位806播放器浏览器中的相关元素,即播放器浏览器中的与用户-浏览器交互记录中指定的元素相对应的文档对象模型元素。该过程将用户输入应用736于该相关元素,并在应用该用户输入之后显示730播放器浏览器。
[0140] 在一些实施方式中,对至少两个播放器浏览器206执行定位806和应用736步骤,并且在应用步骤之后同时显示730这些播放器浏览器。可以使用单个用户-浏览器交互记录214来控制不同浏览器中对应文档元素的行为。在一些配置中,回放发生在全部都是同一类浏览器的浏览器中,例如在教室或研讨会设置中。在一些实施方式中,对至少两种不同种类的至少两个播放器浏览器执行定位806和应用736步骤,从而使用单个用户-浏览器交互记录214来控制不同种类的浏览器中的对应文档元素的行为。在一些实施方式中,对至少两个机器上的至少两个播放器浏览器执行定位806和应用736步骤,从而使用单个用户-浏览器交互记录214来控制多个机器上的浏览器中的对应文档元素的行为。一些实施方式使用跨机器场景,例如跨教室设置中的多个机器的同步回放。一些实施方式使用各种浏览器,例如作为一个示例,微软Internet 浏览器和Apple 浏览器,或作为另一示例,微软Internet 版本6和版本7浏览器。
[0141] 在一些实施方式中,用户-浏览器交互记录读取步骤804是通过自动地截取702对作为与播放器浏览器不同种类的浏览器的记录器浏览器的用户输入;通过标识708被配置成对所截取的用户输入进行响应的记录器浏览器中的目标文档对象模型元素;以及通过从目标元素和所截取的用户输入来创建710用户-浏览器交互记录来进行的。可以在一类播放器中记录并在另一类播放器中回放。
[0142] 在一些实施方式中,定位806播放器浏览器中的相关元素的步骤包括以下各项中的一个或多个:自动地确定808播放器浏览器元素具有也标识该用户-浏览器交互记录元素的标识元素ID属性值;自动地确定810播放器浏览器元素具有也标识该用户-浏览器交互记录元素的标识DOM树位置;自动地确定812播放器浏览器元素具有也标识该用户-浏览器交互记录元素的一组元素样式特性和/或属性值;和/或自动地确定814播放器浏览器元素具有也标识该用户-浏览器交互记录元素的元素属性值与相对于视口原点的位置的组合。
[0143] 在一些实施方式中,该过程包括询问724播放器浏览器文档对象模型元素。在一些实施方式中,该过程包括接受816脚本语言语句并且响应于所接受的语句修改818播放器浏览器文档对象模型元素。在一些实施方式中,该过程包括将播放器浏览器文档对象模型元素的当前状态存储(保存726)到非易失性计算机可读介质112中。在一些配置中,脚本语言语句修改818DOM元素,使得它可以指示触发了什么事件。DOM元素和事件都被存储以供稍后回放。在一些配置中,脚本可被用来修改818元素,无论是否还询问724该元素以及无论是否还将元素改变保存726到盘。
[0144] 在可聚焦于实况浏览器中的回放的一些实施方式中,该过程包括通过读取用户-浏览器交互记录214、定位806播放器浏览器中的相关元素,将用户输入应用736于该相关元素、以及在应用该用户输入之后显示730播放器浏览器来在实况浏览器中解释830所记录的用户-浏览器交互序列中的每一用户-浏览器交互。在一些情况下,暂停834回放,即,暂停解释用户-浏览器交互记录的序列的步骤,直至接收到继续回放的命令224。在一些情况下,回放以步进836模式发生,即解释连续的用户-浏览器交互记录的序列中的每一个的步骤由相应用户命令224来触发。
[0145] 在一些实施方式中,该过程包括显示848从浏览器记录的屏幕截图622,示出了至少一个用户-浏览器交互在该浏览器中的应用736。在一些实施方式中,该过程包括显示850从浏览器记录的视频剪辑624,示出了多个用户-浏览器交互在该浏览器中的应用736。
在一些实施方式中,该过程包括在从浏览器记录的至少一个图像(屏幕截图、视频剪辑)的显示730期间将光标动画化852,示出了多个用户-浏览器交互在该浏览器中的应用736。
在一些实施方式中,该过程包括示出844与从浏览器记录的至少一个图像(通过关联620、标记帧626或以其他方式)相同步的DOM树数据,示出了至少一个用户-浏览器交互在该浏览器中的应用736。
[0146] 在一些实施方式中,该过程包括在单个屏幕中显示730至少两个浏览器202、206中的每一个的浏览器窗口,从而通过将注意力集中于浏览器的当前活动的部分来高效地使用有限的屏幕空间。这可以例如通过显示两个浏览器窗口作为应用程序子窗口来完成。这些窗口可以是平铺的或重叠的。
[0147] 在一些实施方式中,该过程包括在播放器浏览器处接收802跨网络108传送734的多个用户-浏览器交互记录214,使用接收到的浏览器交互记录来定位806播放器浏览器中的相关元素,使用接收到的用户-浏览器交互记录来将用户输入应用736于相关元素,以及在应用了用户输入中的至少一个之后显示730播放器浏览器。
[0148] 在一些实施方式中,该过程包括通过加载先前存储的DOM树状态来将播放器浏览器置于842指定状态。这一状态加载可以是解释用户-浏览器交互以达到该指定状态的替换方案。在一些情况下,不仅仅使用DOM树状态,例如如果执行 代码,则该实施方式还将再现该脚本的执行状态,如当前语句和变量值。
[0149] 在一些实施方式中,该过程包括以与执行播放器交互的次序相反的次序来解释830播放器交互记录的序列中的每一浏览器交互记录。即,回放是以反转838模式执行的。
在一些实施方式中,回放允许但不需要实况浏览器。
[0150] 在一些实施方式中,定位806相关元素的步骤包括以下动作中的至少一个:确定808该元素具有也标识另一浏览器中的相关元素的标识元素ID属性值;确定810该元素具有也标识另一浏览器中的相关元素的标识DOM树位置;确定812该元素具有也标识另一浏览器中的相关元素的一组元素样式特性和/或属性值;确定812、814该播放器元素具有也标识另一浏览器中的相关元素的元素属性值与相对于视口原点的位置的组合。在一些实施方式中,使用动态确定的一组元素样式特性和/或属性值;检查DOM树中的元素的这些值并且找到并使用只属于相关元素的一组值。在一些实施方式中,使用预定的一组元素样式特性和/或属性值,这基于该组将始终把任何元素130与页面的其他元素区分开来的假设。
然而,在某些情形中,一组元素属性值将匹配多个元素,然后将默认或通过用户选择来选择其中一个元素。在一些实施方式中,在多个浏览器中加载同一文档,并且将这些浏览器的大小调整为相同的像素尺寸。
[0151] 在一些实施方式中,将用户输入应用736于相关播放器元素的步骤包括在播放器浏览器中生成系统级事件而不管缺少对该播放器浏览器的直接用户输入。这样生成的事件通过在元素130层面重复被直接给予记录器浏览器的用户输入来模拟(仿真)直接用户输入。
[0152] 在一些实施方式中,将用户输入应用736于相关播放器元素的步骤包括在相关播放器元素上调用增强DOM树中所定义的方法316。这些方法316也可被称为由DOM定义的方法。方法316包括但不一定限于脚本语言方法(例如,采用Sun Microsystems代码、Adobe 代码、微软VBScriptTM代码),以及用诸如C#或C++等其他编
程语言的方法。DOM定义DOM的元素130所展示的方法,并且这些方法可以从脚本语言216以及其他语言的语句226调用。
[0153] 在一些实施方式中,该过程包括通过执行以下动作中的至少一个来促进820状态冻结:挂起822记录器浏览器中的脚本语言(例如,关闭 机器);挂起822播放器浏览器中的脚本语言;挂起824浏览器的执行;挂起826记录器浏览器与web服务器之间的通信(例如,关闭AJAX);挂起826播放器浏览器与web服务器之间的通信;挂起828播放器浏览器中的模拟的系统级事件的生成,即模拟对播放器浏览器的直接用户输入但并非由该直接用户输入产生的事件。
[0154] 在一些实施方式中,该过程包括通过读取属性值来就浏览器元素的位置和/或样式询问724浏览器。在一些实施方式中,询问724在冻结状态期间发生。否则,DOM可以在正在发生询问时改变,这可使得读取变得不可靠。可以向用户显示通过询问724获取的信息和/或记录这些信息以供可能的稍后检查。在一些实施方式中,询问自动发生而无需冻结状态,例如,断点可基于询问:“在元素X样式变成S1时停止”。
[0155] 在一些实施方式中,该过程还包括重写播放器浏览器中所显示的文档的HTML,该重写(某种形式的截取702)对应于用户与记录器浏览器的交互。
[0156] 在一些实施方式中,该过程还包括在播放器浏览器中通过生成事件,例如向元素X发送点击来模拟用户输入。一些实施方式使用被重写以插入 代码以便钩住事件处理程序304作为模拟器的页面。一些实施方式避免重写而改为使用经由DOM展示的方法/事件。
[0157] 在一些实施方式中,该过程还包括在询问步骤后将显示光标咬合回到询问前屏幕位置。直接由鼠标驱动的实际光标处于记录器浏览器中;一些实施方式在播放器浏览器中模拟光标。取决于实现,播放器光标不一定跟踪记录器光标的每一次移动。例如,交互活动测试代码可以忽略元素的区域406内的移动并且仅仅使该光标在元素区域之间跳跃。事实上,因为相同的元素130在不同的浏览器中可不同地布局,所以播放器光标可以在交互活动测试期间在元素区域之间很好地跳跃。在一些实施方式中,记录器浏览器的光标始终跟踪鼠标。播放器浏览器的光标只可在元素之间移动,或者至少不完全跟踪元素内的所有鼠标移动。
[0158] 经配置的介质
[0159] 一些实施方式包括经配置的计算机可读存储介质112。介质112可包括盘(磁盘、光盘或其他)、RAM、EEPROM或其他ROM、和/或其他可配置存储器,具体包括非瞬态计算机可读介质(与电线和其他传播信号介质相对)。该经配置的存储介质具体可以是可移动存储介质114,诸如CD、DVD,或闪存。可以是可移动或不可移动并且可以是易失性或非易失性的通用存储器可被配置成使用数据118和指令116形式的从可移动介质114和/或诸如网络连接等另一源读取的诸如交互活动测试代码204、机制212和/或规范化记录214等项目来生成经配置的介质的实施方式。经配置的介质112能够使计算机系统执行用于通过如此处所公开的交互活动测试来变换数据的方法步骤。图1到9因而帮助示出经配置的存储介质实施方式和方法实施方式,以及系统和方法实施方式。具体而言,图7-9中示出的或在此以其他方式教导的任何方法步骤,可被用来帮助配置存储介质以形成经配置的介质实施方式。
[0160] 附加示例
[0161] 以下提供附加细节和设计考虑。与本文其他示例一样,在给定实施方式中,所描述的特征可以单独地使用和/或组合使用,或根本不使用。
[0162] 在HTML页面128上,所有单独的页面元素130都被组织在被称为文档对象模型(DOM)的树分层结构中。每一个DOM元素130都可以经由事件机制来监听用户发起的动作并对其作出反应。DOM分层结构可随浏览器变化,并且甚至随浏览器版本变化。使用此处的教导,对于给定页面,可以将浏览器DOM规范化以使得可以相同地对待这些分层结构。在一些实施方式中,浏览器DOM是在该实施方式与跨不同DOM树的对应元素相匹配的意义上规范化的。将所记录的一组动作规范化,从而允许跨浏览器回放到所匹配的元素。各实施方式提供了用于跨一定范围的浏览器重新应用规范化的树元素消息(例如,记录214)的机制。各实施方式允许开发人员在复制在一个浏览器中创建的交互的同时或在所需时间(数小时、数天、数星期、数月或甚至数年)之后在DOM元素级跨一定范围的其他所支持的浏览器来查看该交互。与对仅集中于页面布局的跨浏览器诊断和调试的解决方案不同,本文描述的各实施方式允许交互活动测试并创建交互的永久记录以供稍后使用、评估以及修改。
[0163] 在一些实施方式中,用户可以操作记录器浏览器以及任意数量的播放器浏览器中的页面显示。在记录器浏览器中采取的用户发起的动作(例如,点击、鼠标悬停、拖拽事件)的结果在播放器浏览器中近乎实时地显示。一些实施方式通过截取702DOM对象上的事件、记录用户输入和目标元素身份并随后在其他浏览器中的相同页面元素上重放这些事件来操作。这允许用户评估该页面的交互式行为是否在浏览器之间同等地操作,并允许用户对交互的记录进行编辑或注释。由于浏览器呈现差异,DOM元素有时在记录器浏览器和播放器浏览器上将不位于相同物理(x,y)屏幕位置中。由此,各实施方式并非简单地在窗口中的给定位置处模拟系统事件,而是定位806播放器浏览器DOM中的受影响的元素并将操作应用于该元素。
[0164] 一些实施方式提供用于生成和记录被描述为针对标记元素的操作以及应用级消息(例如,显式鼠标坐标)的页面交互的机制。一些实施方式提供用于提升/降低去往/来自DOM树中的元素(诸如
  • 标签上方的悬停)的系统消息(诸如特定屏幕坐标处的鼠标移动)的机制。
  • [0165] 在一些实施方式中,播放器浏览器可位于与主浏览器相同的物理机器上,或位于跨本地网络或因特网通信的不同机器上。一些实施方式包括在同一机器上主存多个浏览器并允许容易地比较和一起查看这些浏览器的交互活动测试代码204接口。
    [0166] 在一些实施方式中,交互活动可以在任何时刻被冻结以便跨浏览器比较布局。可以基于常见的或创新的机制来利用用于查看正在应用什么操作以及什么操作已被应用于哪些元素的界面。一些工具提供用于跨多个浏览器标识页面布局问题的跨浏览器调试和诊断。此处所描述的各实施方式解决了另外的方面。
    [0167] 一个方面关注能够如何测试需要某些交互活动来进入特定状态的网页的布局。例如,位于登录屏幕之后的网页128需要在能够分析感兴趣的页面布局之前登录信息被填充并提交。为了比较多个浏览器中的页面,每一个浏览器(记录器和播放器)接收相同的登录信息并(几乎)同时将该信息提交给服务器。作为另一示例,在比较隐藏在所谓的“可折叠控件”之后的内容的情况下,应在比较内容布局之前触发该可折叠控件。此处所描述的各实施方式允许触发可折叠控件,由此可以比较所有感兴趣浏览器中的布局。
    [0168] 另一方面关注如何能够跨多个浏览器测试交互活动。网页128越来越结合交互元素,诸如菜单、树控件、重叠控件、照片库等。因为HTML/CSS和 机器实现跨不同的浏览器变化,所以开发者可以通过同时跨多个浏览器测试该交互活动以确保其正确地工作来受益。
    [0169] 一些常见的方法帮助网页作者通过在呈现在多个浏览器中时取得网页的图片并且然后提供一组工具来帮助比较这些图片以及用于创建这些图片的元素来调试跨浏览器布局问题。相反,此处所描述的一些实施方式链接多个实况浏览器,由此允许跨这些浏览器全面地比较交互活动。
    [0170] 在一些实施方式中,浏览器被主存在公共界面中,这允许用户容易地选择要比较的浏览器。在图4所示的两个浏览器的情况下,左边的浏览器是“基准”或记录器浏览器,而右边的浏览器是播放器。一些实施方式允许多个播放器浏览器。
    [0171] 假定网页具有在用户将光标移至导航条中的单词上方时变为可见的一组弹出菜单。HTML文档由填充了被称为文档对象模型(DOM)的树状分层结构的一系列元素130构成。每一种类型的元素都具有它可响应的各种事件,诸如鼠标悬停、点击、双击、聚焦等。这些事件还可从子元素向上传播至其父元素。一些实施方式阻止播放器浏览器接收关于直接窗口输入的任何系统级消息,因此播放器将不会对其各自的窗口中的任何直接点击或鼠标移动作出反应。在记录器浏览器窗口中,截取鼠标和键盘事件。对于鼠标事件,跟踪光标的位置,并且光标下面的元素130与每一个鼠标事件相关联,例如在规范化记录214中。在键盘事件的情况下,带有焦点的元素与每一个键输入相关联。在一个示例中,鼠标悬停事件在用户将光标移至导航条中的单词“About Me(关于我)的上方时发生。”
    [0172] 一旦读取804了或以其他方式标识了事件及相关联的元素,就将它们应用于播放器浏览器。与记录器窗口相关联(而非与页面元素相关联)的消息,诸如移动和调整大小等,以系统消息的形式被应用于播放器浏览器的窗口。应用于记录器浏览器中的页面元素的事件被应用于播放器浏览器中的对应的页面元素。对应元素在播放器浏览器中的显示(屏幕和/或视口)位置可以不匹配该元素在记录器浏览器中的位置,因此找到所涉及的元素的位置。由于DOM树在记录器和播放器浏览器之间可能是不同的,因此目标页面元素在记录器浏览器中通过算法来被标识并在播放器浏览器中被定位。一旦找到元素,事件就程序性地应用于该元素。当事件被重放至播放器浏览器中的对应元素时,这些播放器浏览器将在页面跨不同的浏览器兼容的情况下展示与记录器相同的行为,或者在该页面不兼容的情况下展示不同的行为。
    [0173] 在一些情况下,用户可能想要测试/检查元素在特定交互状态时(诸如在展开菜单时)的布局。在这种情况下,一些实施方式可冻结交互活动。在一个示例中,敲击F11键将冻结记录器和播放器浏览器的状态。此时,用户可以向浏览器询问724关于每一个元素的位置和样式信息以确定任何差异的源可能是什么。再次敲击F11将解除交互活动的冻结,以便允许用户再一次在浏览器中触发事件。
    [0174] 各实施方式不限于安装在单个机器上的浏览器。本文的教导可用于控制连接网络的设备上的浏览器。这可用于测试例如 和 Windows机器上的浏览器之间的兼容性。在非本地浏览器的情况下,一些实施方式使用从记录器浏览器接收消息并将其应用于远程播放器的交互活动测试实用程序。
    [0175] 显示730和/或记录714事件的序列以及这些事件被应用到的元素也可能是有用的。这可用于帮助调试页面或在不同的时刻重放序列。在一些情况下,能够记录并回放交互活动以用于稍后询问,或保存脚本来在播放器上重放以确保版本之间的兼容性是有用的。这一屏幕捕捉的一个好处是能够在与实况浏览器相同的界面内显示云浏览器的结果。假定主存若干实况播放器浏览器并且具有来自云浏览器的流视频(或屏幕截图序列)的实施方式。在该界面内,可以测试例如PC和Mac浏览器。一些实施方式将远程浏览器看作本地实况浏览器。可能存在某种等待时间,但不对所有远程浏览器进行屏幕截图,而是可以跨线路来传送消息并发送回变化的屏幕截图,而仍然与实况浏览器交互。
    [0176] 结论
    [0177] 虽然在此将具体实施方式明确示出并描述为方法、经配置介质或系统,但可以明白,一种类型的实施方式的讨论一般也延及其他实施方式类型。例如,结合图7到9的方法描述还帮助描述经配置的介质,并帮助描述如结合其他附图讨论的那些系统和制品等系统和制品的操作。来自一个实施方式的限制并不需要在另一实施方式中。具体而言,方法不一定需要限于在讨论诸如经配置的介质等系统或制品时呈现的数据结构和安排。
    [0178] 附图中示出的每一项也并不一定存在于每一实施方式中。相反,一实施方式可包含附图中未明确示出的项。虽然在文中和附图中通过具体示例示出了一些可能的实施方式,但各实施方式可以与这些示例不同。例如,一示例的具体特征可被忽略、重命名、不同地编组、重复、以硬件和/或软件来不同地初始化、或作为出现在两个或更多个示例中的特征的混合。在一些实施方式中,在一个位置处示出的功能也可以在不同的位置处提供。
    [0179] 如此处所使用的“被配置成响应所截取的用户输入”和类似语言不一定要求响应发生。元素可以仅仅由于是用户输入的预期目标而被“配置成响应用户输入”。由此,被配置成响应用户输入的元素不一定具有为某一用户事件注册的事件处理程序。一实施方式可截取事件,即使目标元素(被配置成响应该输入的元素)实际上不会响应于该事件而做任何事。例如,一个浏览器中的DIV上的鼠标悬停可以不做任何事,而另一浏览器中的同一DIV具有改变其背景颜色的鼠标悬停。一实施方式仍旧可以截取领导者浏览器中的事件,即使跟随者浏览器将不会响应于该事件而采取动作。
    [0180] 在全文中通过附图标记引用了各附图。在附图中或文中的与给定附图标记相关联的措辞中的任何明显的矛盾,应被理解为简单地拓宽该附图标记所引用的事物的范围。
    [0181] 如本文所使用的,诸如“一”和“该”等词语包括所指示的项或步骤中的一个或多个。具体而言,在权利要求书中,对项的引用一般意味着存在至少一个这样的项,并且对步骤的引用意味着执行这一步骤的至少一个实例。
    [0182] 标题只是出于方便的目的;关于给定主题的信息可以在其标题指示该主题的章节之外找到。
    [0183] 所提交的所有权利要求和摘要是该说明书的一部分。
    [0184] 尽管在附图中示出并在以上描述了各示例性实施方式,但对本领域技术人员显而易见的是,可以作出不背离权利要求书中阐明的原理和概念的多种修改。尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。给定定义或示例中标识的每一措施或方面,不一定存在或不一定用于每一实施方式。相反,所描述的具体特征和动作是作为供在实现权利要求时考虑的示例而公开的。
    [0185] 落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
    QQ群二维码
    意见反馈