QTP - 网站上的验证码录制

上一篇 / 下一篇  2009-09-19 15:07:19 / 个人分类:QTP

http://bbs.51testing.com/thread-159897-1-2.html
http://bbs.51testing.com/thread-161144-1-22.html

经过以上两个帖子的学习,终于至少可以录制那些比较“清晰”的验证码了。所谓清晰,是不带干扰背景的,但是至少可以获取类似的文字,所以说明方法还是成功了。所以还是挺高兴的,在这里记录一下方法:
Example:http://www.kaixin001.com/reg/reg.php
思路:将验证码图片里的文字获取到datasheet,然后得到datasheet里的值set到验证码的输入框
 
Window("注册 - 开心网 - Microsoft Internet").WinObject("Internet Explorer_Server").Click 427,144
Window("注册 - 开心网 - Microsoft Internet_2").WinObject("Internet Explorer_Server").Output CheckPoint("Internet Explorer_Server_2")
Dim validation
validation=datatable.GetSheet("Global").GetParameter("output").ValueByRow(1)
Browser("注册 - 开心网").Page("注册 - 开心网").WebEdit("code").Set  validation

具体代码请参考qtp test目录下的Validate_Data_Web.
 
这里有几个知识点:
1. output CheckPoint可以将某个对象作为output的值,写到qtp自带的datasheet中。但是这里的验证码是个图片西西的东西,所以经过论坛指点,选用text area output values。查了下qtp的help:You can create a text area output value only while recording on Windows-based applications—Standard Windows, Visual Basic and ActiveX. 因此要基于windows-base的application,这里又有两个方法可以做到这一点:1)录制的时候选低级录制 2)录制两段script,其中一段刚打开qtp时将web插件去掉,就变成windows-base的了。然后在录制的时候,假如在那个验证框这里右键,就只有insert output value这个选项,没有text area output,但其实可以在insert菜单的output下选text area output values,然后修改输入到datasheet的column名字,比如就叫output。
2. 现在剩下的问题就是:我录制的开心网的注册界面的验证码在很下面,假如有些页面最大化后还不能显示这个验证框,一定要下拉到页底,该怎么操作呢?等待下面帖子的回复:
http://bbs.51testing.com/viewthread.php?tid=159897&page=2&extra=page%3D2

 

2009-09-27

今天看了精华贴,总结了验证码问题的几个解决方案,我之前上面说的这种只是比较容易实现的一种,其实还有很多困难。于是请看下列总结。
http://bbs.51testing.com/thread-41992-1-5.html

    1、测试的时候,让程序员把这块限制去掉,免去验证这关。
    2、让程序员提供一个万能验证码,测试可以绕过这一关。
    3、请程序员提供识别的方法,从获取的图片读出验证数据,再传给QTP。
    4、进行位图检查,将验证码分段进行图像验证。
    实际上,验证码的目的就是防止用程序灌水或机器录入信息。所以有点为难我们测试了。
方法1,如果程序已在发布并有客户使用,危险性是可想而知的。方法2虽然可以解决验证这一关,但跳过了输入码与验证码一致性问题。方法3就需要程序员配合了,可能就需要调用DLL了。方法4却将图像分段,把获取的图像和已经的图像进行比对,比对通过取对应的值;这个在数字验证会好做一点,因为最多就四个图像的比对。

 

 

2009-09-30

以上过程只是实践,但是还是不是特别了解识别机制。但看了下面的帖子,终于对OCR有了深入的了解:
http://bbs.51testing.com/thread-128911-1-3.html
http://bbs.51testing.com/thread-129864-1-1.html

【转】验证码的解决思路:
其实解决图片验证码的思路有很多,我这里主要结合QTP9.5的新特性给大家介绍其中一种解决方案,就是利用它的OCR机制抓取文本内容。
在QTP9.5中,对象识别能力有了进一步改善,其中针对文本识别方面进行了优化,引入了ABBYY公司的OCR解决方案——这个相关的功能体现在QTP菜单的“Tools-->Options-->General--Use text recognition mechanisms in this order”里。
先来看看ABBYY是何许公司,登录他们的官方网站可以看到一段相关介绍:“ABBYY是世界OCR(光学字符识别)、ICR(手写体识别)和语言软件的领航者。ABBYY 致力于人工智能(AI)和语言软件开发。提供全套文档识别,转换和数据捕获技术的产品解决方案。”如果你使用过图像文档转换的软件,一定会听说过FineReader OCR Professional ,其实它就是ABBYY公司的产品,用官方的说法就是“将通过扫描仪、MFP 或数码相机生成的图像快速转换为可编辑和可搜索的电子格式,而且识别率很高”,说白了就是可以借助它先进的OCR机制“读”出图片里的文本内容,并转换为PDF之类的文档。
有了ABBYY这么强大的背后支持,QTP自然底气十足,那么QTP到底如何以OCR机制识别文本呢?我们首先先了解一下什么是OCR。OCR(Optical Character Recognition,光学字符识别),是属于图型识别(Pattern Recognition,PR)的一门学问。其目的就是要让计算机知道它到底看到了什么,尤其是文字资料。 由于OCR是一门与识别率拔河的技术,因此如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。而根据文字资料存在的媒体介质不同,及取得这些资料的方式不同,就衍生出各式各样、各种不同的应用。”这里有个关键词:“正确率”,也就是“识别率”——既然不能够总是100%,我们自然不可能完全寄希望于通过QTP能够每次100%正确的去识别图片里的文本。尤其是“道高一尺魔高一丈”的今天,验证码加入了大量的干扰素,如扭曲、变形、错位、随机背景花纹,给OCR识别增加了很多难度——本来就不希望被软件识别到嘛。

了解了OCR之后,我们再来看看QTP对应的这个设置。如前面所说,通过QTP菜单的“Tools-->Options”选中到“General--Use text recognition mechanisms in this order”,这里的四个选项就是对应的不同设置。我们看看帮助的描述(我做了翻译):
=================================
使用文本识别机制

指定QTP在采用 “文本”或者“文本区域” 的 检查点或输出值 的步骤时,捕获文本内容所使用的文本识别机制。
以下有三种识别方式:
1、先使用Windows API,再使用OCR(默认)。
    指示QTP首先尝试以基于Windows API的机制从对象上直接获取文本内容。如果未获取到文本(比如,文本属于图片的一部分),QTP就会使用OCR的机制尝试获取这段文本。
    强烈建议在使用中日韩(象形文字)、英的语言环境下采用这个设置。

2、先使用OCR,再使用Windows API。
    指示QTP首先尝试使用OCR机制从对象上去获取文本。如果未获取到文本,QTP就会以Windows API的机制去获取文本内容。

3、仅使用Windows API方式。
    指示QTP仅采用基于Windows API的机制从对象上获取文本内容。

4、仅使用OCR的方式。
    指示QTP仅采用基于OCR的机制从对象上获取文本内容。
    在使用Windows Vista要使用这种方式。

=================================
上面的内容已经解释的很明确了,接下来我们通过TextArea Output Value看看效果。(操作过程请参照上面的实践部分)


TAG: 验证码 OCR QTP

のDream的个人空间 引用 删除 violet0214   /   2013-03-27 16:35:50
太复杂,能简单说步骤就好了。
wuxiulin的个人空间 引用 删除 wuxiulin   /   2009-10-09 14:21:46
1
 

评分:0

我来说两句

我的栏目

日历

« 2024-04-26  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 26998
  • 日志数: 30
  • 建立时间: 2009-09-19
  • 更新时间: 2012-09-02

RSS订阅

Open Toolbar