网站自动化测试方法和系统
技术领域
本发明涉及网站测试领域,更具体地说,涉及采用网页验证码锁定进行网站自动化测试的方法和系统。
背景技术
目前网页中的验证码在终端用户显示时,会采用各种方式进行保护,如点击刷新,定时刷新等,以做到需要用户手眼并用,才能进行操作的程度。
当前自动化中解决这个问题的技术途径主要是在获取验证码图片的焦点后,使用后台程序获取验证码图片流,识别程序进行识别,然后在焦点处填写验证码。
不少网站在用户登录、用户提交信息等登录和输入的页面上使用了验证码技术。验证码技术可以有效防止恶意用户对网站的滥用,使得网站可以有效避免用户信息失窃、广告垃圾等问题。但与此同时,验证码技术的使用却使得WEB自动化测试面临了较大的困难——由于验证码的存在,传统的“录制”-“回放”工具由于不能识别验证码而失效。在各大软件测试的论坛中,经常能看到测试工程师在焦急地发问“自动化测试时如何处理页面上的验证码?”,可见,该问题确实严重困扰着相当多的测试工程师。
当前自动测试中WEB验证码处理的方法主要如下:
从技术的角度来看,有两种不同的方法来实现自动测试工具对验证码的处理:完全从客户端角度考虑,靠模式识别的方法识别出验证码图片对应的字符串;从服务端角度考虑,如果自动测试工具可以获取Session中存储的随机数,也就能正确处理验证码了。这两种方法是解决自动化测试中验证码问题的主要方法,我们分别称其为识别法和服务端插入法。这两种方法在实现方法上侧重点不同,适用的场合也不同。识别法完全不用考虑服务端应用的实现,通过各种技术方法对显示的验证码图片进行“破译”,这样,即使完全不能接触到服务端代码,也能让自动化测试在有验证码的情况下进行下去;但这种方法当然也有其致命的缺点:只能对简单的验证码进行识别,对复杂的验证码,根本就无法识别。有时候无法通过文件流方式获取验证码图片,即使能够获取相关图片流,过程也非常复制,要求较高,从而导致必须从已经显示网页中获取。当自动化通过所见即所得的方式获取后,在回填验证的过程中,验证码又会发生变化。导致验证码失效。目前使用IE或者不同浏览器插件开发,可以完成相关图片获取,但是插件开发复杂,而且不同浏览器必须开发不同插件。
而服务端插入法则从服务端入手,通过提供一个额外的客户端接口,向客户端只需要知道该接口的调用方法,就能通过该接口来获取该页面的验证码图片对应的验证码。但是这样的话需要服务器提供额外的接口,对于服务器来说是不安全而且不方便。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述网站自动测试中出现的为了处理页面上的验证码开发复杂的浏览器插件或在服务器上设置额外的客户端接口导致服务器不安全的缺陷。构造一种实现成本低,不需要服务器提供任何接口的自动化测试方法和系统。
本发明解决其技术问题所采用的技术方案是:构造一种网站自动化测试方法,其中包括步骤:S1、获取网页的验证码焦点;S2、基于浏览器的DOM树屏蔽验证码刷新事件;S3、根据所述验证码焦点,获取、识别及回填验证码,登录网站;S4、登录网站后进行自动化测试。
在本发明所述的网站自动化测试方法中,所述步骤S2包括:S21、激活验证码所在窗体,获取浏览器的顶级窗体;S22、根据所述浏览器的顶级窗体和所述验证码焦点获取与验证码相应的窗体;S23、根据所述验证码相应的窗体获取浏览器中相应的文档对象;S24、将所述文档对象中与时间相关的事件屏蔽。
在本发明所述的网站自动化测试方法中,所述步骤S21为通过JAVASCRIPT激活验证码所在窗体,通过JAVASCRIPT对象获取所述浏览器的顶级窗体。
在本发明所述的网站自动化测试方法中,所述步骤S22为根据所述浏览器的顶级窗口和所述验证码焦点获取所述与验证码相应的窗体的引用方式,通过HTML源码分析所述与验证码相应的窗体的引用方式获取所述与验证码相应的窗体。
在本发明所述的网站自动化测试方法中,所述步骤S24为将所述文档对象中与时间相关的事件设置成null的格式。
本发明还构造一种网站自动化测试系统,其中包括:定位模块:用于获取网页的验证码焦点;屏蔽模块:用于基于浏览器的DOM树屏蔽验证码刷新事件;登录模块:用于根据所述验证码焦点,获取、识别及回填验证码,登录网站;以及测试模块:用于登录网站后进行自动化测试。
在本发明所述的网站自动化测试系统中,所述屏蔽模块包括:激活单元:用于激活验证码所在窗体,获取浏览器的顶级窗体;第一获取单元:用于根据所述浏览器的顶级窗体和所述验证码焦点获取与验证码相应的窗体;第二获取单元:用于根据所述验证码相应的窗体获取浏览器中相应的文档对象;屏蔽单元:用于将所述文档对象中与时间相关的事件屏蔽。
在本发明所述的网站自动化测试系统中,所述激活单元通过JAVASCRIPT激活验证码所在窗体,通过JAVASCRIPT对象获取所述浏览器的顶级窗体。
在本发明所述的网站自动化测试系统中,所述第一获取单元用于根据所述浏览器的顶级窗体和所述验证码焦点获取所述与验证码相应的窗体的引用方式,通过HTML源码分析所述与验证码相应的窗体的引用方式获取所述与验证码相应的窗体。
在本发明所述的网站自动化测试系统中,所述屏蔽单元用于将所述文档对象中与时间相关的事件设置成null的格式。
实施本发明的网站自动化测试方法和系统,具有以下有益效果:从第三个角度去获取验证码,屏蔽相关保护,使自动化测试工作达到如何模仿人手眼并用的能力。程序控制使浏览器内部相关事件发生改变,屏蔽相关动态刷新功能。不改变原有程序服务器端任何功能,不需要服务器提供任何接口,上述自动化测试过程,全部实现程序控制和流程控制。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明的网站自动化测试方法的第一优选实施例的流程图;
图2是本发明的网站自动化测试方法的第二优选实施例的流程图;
图3是本发明的网站自动化测试系统的第一优选实施例的结构示意图;
图4是本发明的网站自动化测试系统的第二优选实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在图1所示的本发明的网站自动化测试方法的第一优选实施例的流程图中,所述网站自动化测试方法开始于步骤100,步骤100之后进行到步骤101,获取网页的验证码焦点;随后,到下一步骤102,基于浏览器的DOM树屏蔽验证码刷新事件;随后,到下一步骤103,根据所述验证码焦点,获取、识别及回填验证码,登录网站;随后,到下一步骤104,登录网站后进行自动化测试;最后该方法结束于步骤105。采用本网站自动化测试方法时,使用技术框架工具,编写程序,让网页自动打开后,自动获取验证码焦点,等待验证码图片显示后,通过程序控制,改写浏览器DOM(Document Object Model:文档对象模型)树,屏蔽验证码刷新各种事件,然后通过程序控制移动焦点,获取图片,进行图片识别后,然后重新获取验证码焦点,进行验证码回填。本网站自动化测试方法使用自主研发框架,作为浏览端语言执行平台,通过浏览端语言相关对象,把相应事件进行屏蔽。本网站自动化测试方法从第三个角度去获取验证码,屏蔽相关保护,使自动化测试工作达到如何模仿人手眼并用的能力。程序控制使浏览器内部相关事件发生改变,屏蔽相关动态刷新功能。不改变原有程序服务器端任何功能,不需要服务器提供任何接口。
在图2所示的本发明的网站自动化测试方法的第二优选实施例的流程图中,所述网站自动化测试方法开始于步骤200,步骤200之后进行到步骤201,获取网页的验证码焦点;随后,到下一步骤202,激活验证码所在窗体,获取浏览器的顶级窗体;随后,到下一步骤203,根据所述浏览器的顶级窗体和所述验证码焦点获取与验证码相应的窗体;随后,到下一步骤204,根据所述验证码相应的窗体获取浏览器中相应的文档对象;随后,到下一步骤205,将所述文档对象中与时间相关的事件屏蔽;随后,到下一步骤206,根据所述验证码焦点,获取、识别及回填验证码,登录网站;随后,到下一步骤207,登录网站后进行自动化测试;最后该方法结束于步骤208。其中步骤202为通过JAVASCRIPT激活验证码所在窗体,通过JAVASCRIPT对象获取所述浏览器的顶级窗体,步骤203为根据所述浏览器的顶级窗体和所述验证码焦点获取所述与验证码相应的窗体的引用方式,通过HTML源码分析所述与验证码相应的窗体的引用方式获取所述与验证码相应的窗体,步骤205为将所述文档对象中与时间相关的事件设置成null的格式。通过使用JAVASCRIPT激活验证码所在窗体,类似人手工点击相应的验证码输入框;通过使用JAVASCRIPT对象,获取浏览器的顶级窗体;通过浏览器的顶级窗体和所述验证码焦点(即验证码元素的所在位置)获取验证码相应的子窗体的引用方式;通过阅读HTML源码分析,或者借助工具从验证码相应的子窗体的引用方式中获取验证码输入框所在窗体;通过获取的窗体,获取浏览器中相应的文档对象,最后显示在浏览器中的文档对象;对文档对象中与时间相关的事件进行屏蔽,如onselect事件,把这些事件设置成null的格式,或者改写相关事件;使用外界程序获取验证码图片,交给验证码识别程序进行识别;对识别后的验证码程序进行回填;最后使用工具进行网站的自动化测试。
本发明还构造一种网站自动化测试系统,如图3所示的本发明的网站自动化测试系统的第一优选实施例的结构示意图中,所述网站自动化测试系统包括定位模块1、屏蔽模块2、登录模块3以及测试模块4。定位模块1用于获取网页的验证码焦点;屏蔽模块2用于基于浏览器的DOM树屏蔽验证码刷新事件;登录模块3用于根据所述验证码焦点,获取、识别及回填验证码,登录网站;测试模块4用于登录网站后进行自动化测试。采用本网站自动化测试系统时,使用技术框架工具,编写程序,让网页自动打开后,定位模块1自动获取验证码焦点,等待验证码图片显示后,通过程序控制,屏蔽模块2改写浏览器DOM(Document Object Model:文档对象模型)树,屏蔽验证码刷新各种事件,然后登录模块3通过程序控制移动焦点,获取图片,进行图片识别后,然后重新获取验证码焦点,进行验证码回填;最后系统启动测试模块4进行自动化测试。本网站自动化测试方法使用开源框架,作为浏览端语言执行平台,通过浏览端语言相关对象,把相应事件进行屏蔽。本网站自动化测试方法从第三个角度去获取验证码,屏蔽相关保护,使自动化测试工作达到如何模仿人手眼并用的能力。程序控制使浏览器内部相关事件发生改变,屏蔽相关动态刷新功能。不改变原有程序服务器端任何功能,不需要服务器提供任何接口。
如图4所示的本发明的网站自动化测试系统的第二优选实施例的结构示意图中,屏蔽模块2包括激活单元21、第一获取单元22、第二获取单元23以及屏蔽单元24。激活单元21用于激活验证码所在窗体,获取所述浏览器的顶级窗体;第一获取单元22用于根据所述浏览器的顶级窗体和所述验证码焦点获取与验证码相应的窗体;第二获取单元23用于根据所述验证码相应的窗体获取浏览器中相应的文档对象;屏蔽单元24用于将所述文档对象中与时间相关的事件屏蔽。其中激活单元21通过JAVASCRIPT激活验证码所在窗体,通过JAVASCRIPT对象获取所述浏览器的顶级窗体。第一获取单元22用于根据所述浏览器的顶级窗体和所述验证码焦点获取所述与验证码相应的窗体的引用方式,通过HTML源码分析所述与验证码相应的窗体的引用方式获取所述与验证码相应的窗体。屏蔽单元24用于将所述文档对象中与时间相关的事件设置成null的格式。激活单元21通过使用JAVASCRIPT激活响应的验证码所在窗体,类似人手工点击相应的验证码输入框;同时激活单元21通过使用JAVASCRIPT对象,获取浏览器的顶级窗体;第一获取单元22通过浏览器的顶级窗体和验证码焦点获取验证码相应的子窗体的引用方式;通过阅读HT ML源码分析,或者借助工具从验证码相应的子窗体的引用方式中获取验证码输入框所在窗体;第二获取单元23通过获取的窗体,获取浏览器中相应的文档对象,最后显示在浏览器中的文档对象;屏蔽单元24对文档对象中与时间相关的事件进行屏蔽,如onselect事件,把这些事件设置成null的格式,或者改写相关事件;登录模块3使用外界程序获取验证码图片,交给验证码识别程序进行识别;对识别后的验证码程序进行回填;最后测试模块4使用工具进行网站的自动化测试。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。