分析web应用程序的结构的制作方法_2

文档序号:9240052阅读:来源:国知局
104的结构,以把web应用程序104的复杂DOM转换为一组可操作的令牌。各可操作的令牌可以包括web应用程序的、能够改变基于web应用程序104而被呈现的用户界面的部分。web应用程序的、能够改变用户界面的部分的示例可以包括键盘事件的目标、点击事件的目标、其它可操作的元素等等。在一些示例中,可操作的元素可以包括JavaScript对象。
[0022]在一个示例中,文档分析器108可以根据模拟的动作确定web应用程序104中存在特定类型的框架。在一个示例中,框架是其中提供通用功能软件可以被用户代码选择性地改变,以提供应用程序特定的软件的抽象。这可以通过利用模拟的动作来确定存在与框架有关的选择器而发生。根据这一方法,可以确定多个框架。web框架的示例包括jQuery、YUI Lobrary、Dojo工具箱、MooToo1、原型JS框架、Ajax、网络无障碍倡议(Web Accessibility Initiative, WAI) 一无障碍丰富互联网应用程序(Accessible RichInternet Applicat1ns,ARIA)和Flash。框架可以被进一步粒化成版本,因为版本的变化可能影响相关的功能和选择器。
[0023]可以为每一个识别的框架启用一组选择器。在一个示例中,也可以启用一些默认的选择器,在其它示例中,当识别了框架时,所有有关的选择器都被启用。在又一示例中,当与框架有关的选择器被识别时,该框架被识别。
[0024]此外,选择器可以被基于web应用程序104可以被搜索的内容而过滤。例如,知道jQuery存储关于选择器的信息的方式,文档分析器108就可以通过查询jQuery的缓存结构来获取选择器的列表。缓存结构可以根据jQuery的版本变化。
[0025]在一个示例中,为了找到相关的选择器,文档分析器可以分析jQuery.cache JS代码[window, document [jQuery.expando]]。结果可能是包含为鼠标和/或键盘事件的有效目标的DOM元素的选择器的JS对象的阵列。这一示例可以基于jQuery 1.6。在jQueryl.7中,内部结构发生了变化,因此可以编写更复杂的JS代码以获得相关元素。这一类型的代码可以具体地为具体类型的框架编写。在某些示例中,可以把jQuery称为框架,而1.6和1.7被称为框架的版本或类型。当发现特定的框架时,可以基于框架的具体细节分析web应用程序104以获得可操作的令牌。诸如处理web应用程序代码的其它方法可以被用来确定特定框架的存在。此外,可以实现文档分析器108的规则来自动地检测一个或多个框架并获取相关元素的列表。
[0026]当分析web应用程序104时,越来越多的选择器被确定。如所指出的,规则可以被用来确定通用的,框架特定的,或实现特定的(例如,那些从缓存抽出的)的选择器。然后,文档分析器108可以使用符号化功能来尝试寻找被激活的选择器的作用和位置。利用选择器,文档分析器108和/或扫描器102可以在web应用程序104上查找令牌。如上所述,在某些示例中,令牌表示为鼠标或键盘事件的有效目标的DOM元素,或可能被调用、评价、或以任何其它方式修改的JS实体。可以为选择器中的每一个选择器找到一组令牌。在一些示例中,组可以是空的。令牌可以包括令牌的定位器和可以对/由令牌进行的一个或多个功能或动作。
[0027]因此,当被实现时,规则可以激活至少一个选择器,至少一个选择器可以返回至少一个可操作的令牌。此外,各可操作的令牌可以包括相关的定位器和一组与各可操作的令牌有关的允许的动作。进一步地,当文档分析器108确定特定类型的代码在web应用程序中可执行时(例如,确定了框架),文档分析器108可以根据特定类型的代码(例如,框架)确定允许的动作中的至少一个动作。例如,这可以通过启用相关的选择器、然后根据选择器尝试寻找令牌和元素,而发生。
[0028]如所示出地,一组令牌可以被发送给扫描器102以扫描web应用程序104。在一个示例中,扫描器102可以是用于模拟用户动作的同一扫描器。在另一示例中,扫描器可以是另一扫描器。扫描器可以包括用于消耗可操作的令牌的事件处理程序。进一步地,扫描器可以使用可操作的令牌来确定要在web应用程序104中执行的一组测试。扫描器可以通过为可操作的令牌中的每一个可操作的令牌都执行根据各定位器定位的测试和在定位器处的相应的允许动作,来根据可操作的令牌在web应用程序中执行测试。
[0029]适于检索和执行指令的处理器,例如中央处理单元(CPU)或微处理器,和/或电子电路可以被配置来执行本发明所述的任何部件的功能。在某些情况下,指令和/或其它信息,如令牌、web应用程序、规则等,可以被包括在存储器中。每个部件都可以包括,例如包括用于实现本发明所述的功能性的电子电路的硬件设备。除此之外或作为替代,每个部件都可被实现为被编码在机器可读存储介质上并且可由处理器执行的一系列指令。应该注意到,在一些实施例中,一些模块被实现为硬件设备,而其它模块则被实现为可执行指令。
[0030]图2A和图2B为根据各种示例的规则和令牌的框图。图2A示出规则对象200。规则对象200可以是结构、类等等。每条规则都可以与相关属性202和选择器204相关联。选择器204可以包括一组一个或多个选择器206a — 206η。选择器204、206a — 206η检查DOM并返回可操作的DOM实体的序列。不是所有的选择器206a — 206η都需要与单个规则相关联。相关属性202被用来激活或禁用规则。在一个示例中,当文档分析器正在web应用程序上执行时,来自扫描器的爬行可以被用来确定规则是否是相关的。在一些示例中,在web应用程序中使用的一个或多个框架可能留下指纹。这可以被用来确定哪些规则与应用程序有关。在其它示例中,扫描器可以爬行应用程序并随机地选择应用程序中的对象。对象可以被分析以用来确定规则是否相关。选择器的示例包括CSS选择器206a、JavaSCript选择器206b和jQuery选择器206η。在一个示例中,规则可以被与特定类型的jQuery版本相关联。如此,当规则被认为是相关的,可以检查jQuery缓存来决定要启用的选择器。
[0031]图2B示出令牌对象250。令牌对象250可以是结构、类等等。令牌对象250可以包括一个或多个动作252,以及定位器254。令牌对象250可以定义应该是扫描器的动作的目标的DOM实体。可以通过各种机制,例如XPath260、属性262 (例如,ARIA)、TruCl ient264等,进行位置确定。操作或动作可能根据DOM元素而不同。例如,可操作的令牌可以被与鼠标事件256、键盘事件258或其它用户界面改变事件(例如,执行JS代码)相关联。
[0032]图3为根据一个示例的用于分析web应用程序的结构的方法的流程图。尽管下面参照计算系统100描述方法300的执行,但是可以使用执行方法300的其它合适的部件(例如,计算设备400)。此外,用于执行方法300的部件可以在多个设备间被展开。方法300可以被实现为被存储在诸如存储介质420的机器可读存储介质上的可执行指令和/或电子电路的形式。
[0033]方法300可以在302,以web应用程序104被加载到浏览器布局引擎106中,而开始。在304,扫描器或其它设备/模块可以在web应用程序104的用户界面元素上模拟用户的动作。在一些示例中,用户界面元素是能够交互和/或定义界面的外观的结构。用户界面元素的示例包括窗口、菜单、图标、域、控件、标签、光标、指针等。
[0034]在306,文档分析器108可以根据规则遍历web应用程序104的结构,并分析web应用程序104的复杂DOM以确定一组可操作的令牌。如上所述,各可操作的令牌可以包括web应用程序104的、能够改变基于web应用程序104而被呈现的用户界面的部分。该部分可以包括键盘事件、点击事件、可能被调用、评价或以任何其它方式修改的JS实体、或其组合的有效的目标。进一步地,可操作的令牌中的每一个可操作的令牌都可以包括各自的定位器和各自的一组允许动作。
[0035]如上所述,文档分析器108可以通过确定什么规则应该被启用和根据启用的规则确定选择器,来确定可操作的令牌。然后,文档分析器108可以使用选择器来确定令牌。
[0036]在某些示例中,令牌然
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1