心念旧安,夙夜忧叹。

如何用QTP解决图片验证码(解析QuickTest文本识别机制)?

上一篇 / 下一篇  2008-10-10 19:24:18 / 个人分类:原创文章

查看( 16567 ) / 评论( 29 )
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网1X a$MHt
51Testing软件测试网rK4q g`b
大家在使用QTP进行自动化测试的过程中经常会遇到图片验证码的问题——大家所关心的就是如何解决此类问题。51Testing软件测试网fi"}!}zy!D8O-E
这里我们首先要去了解为什么会有图片验证码。其实验证码的本质作用就是防止有人利用工具(灌水机、注册机,当然也不小心包括了我们的自动化测试工具)恶意猜解登陆或者不停的注册和灌水的。因此如果我们完全寄希望于通过GUI识别来获取内容是不切实际的——先打好预防针,免得读者希望太大,失望更大,呵呵!51Testing软件测试网Uj K*tIQ
下面说说验证码的解决思路:51Testing软件测试网1J8tq$aeD!_v3L x e
其实解决图片验证码的思路有很多,我这里主要结合QTP9.5的新特性给大家介绍其中一种解决方案,就是利用它的OCR机制抓取文本内容。
P/fC#r)e-};Sc0在QTP9.5中,对象识别能力有了进一步改善,其中针对文本识别方面进行了优化,引入了ABBYY公司的OCR解决方案——这个相关的功能体现在QTP菜单的“Tools-->Options-->General--Use text recognition mechanisms in this order”里,详细内容后面会有具体介绍。
j9U.l J s1Y2@0先来看看ABBYY是何许公司,登录他们的官方网站可以看到一段相关介绍:“ABBYY是世界OCR(光学字符识别)、ICR(手写体识别)和语言软件的领航者。ABBYY 致力于人工智能(AI)和语言软件开发。提供全套文档识别,转换和数据捕获技术的产品解决方案。”如果你使用过图像文档转换的软件,一定会听说过FineReader OCR Professional ,其实它就是ABBYY公司的产品,用官方的说法就是“将通过扫描仪、MFP 或数码相机生成的图像快速转换为可编辑和可搜索的电子格式,而且识别率很高”,说白了就是可以借助它先进的OCR机制“读”出图片里的文本内容,并转换为PDF之类的文档。
"P7^vA*vsH0有了ABBYY这么强大的背后支持,QTP自然底气十足,那么QTP到底如何以OCR机制识别文本呢?我们首先先了解一下什么是OCR。
i/X:e cI.S/l z0打开“百度百科_OCR”,它的说明:“OCR(Optical Character Recognition,光学字符识别),是属于图型识别(Pattern Recognition,PR)的一门学问。其目的就是要让计算机知道它到底看到了什么,尤其是文字资料。 由于OCR是一门与识别率拔河的技术,因此如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。而根据文字资料存在的媒体介质不同,及取得这些资料的方式不同,就衍生出各式各样、各种不同的应用。”这里有个关键词:“正确率”,也就是“识别率”——既然不能够总是100%,我们自然不可能完全寄希望于通过QTP能够每次100%正确的去识别图片里的文本。尤其是“道高一尺魔高一丈”的今天,验证码加入了大量的干扰素,如扭曲、变形、错位、随机背景花纹,给OCR识别增加了很多难度——本来就不希望被软件识别到嘛。
E/iwP v5p X051Testing软件测试网"fv~"K }!^
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网i+b/F zi&|7R
51Testing软件测试网WN#`n'M1m51Testing软件测试网r H0LL6ce
了解了OCR之后,我们再来看看QTP对应的这个设置。如前面所说,通过QTP菜单的“Tools-->Options”选中到“General--Use text recognition mechanisms in this order”,这里的四个选项就是对应的不同设置。我们看看帮助的描述(我做了翻译):
Z+Blup0MX3p0=================================
s f#g\Il_0使用文本识别机制51Testing软件测试网x a1\?E(XSJ$^e/c
51Testing软件测试网y"v%p"ca;k~,tVZ
指定QTP在采用 “文本”或者“文本区域” 的 检查点或输出值 的步骤时,捕获文本内容所使用的文本识别机制。51Testing软件测试网-K n*|6F"aa/U;T
以下有三种识别方式:
-x;p*wI8v*o Xd01、先使用Windows API,再使用OCR(默认)。
5qW:jYD h-v+R0    指示QTP首先尝试以基于Windows API的机制从对象上直接获取文本内容。如果未获取到文本(比如,文本属于图片的一部分),QTP就会使用OCR的机制尝试获取这段文本。
A\0f/@mxe U0    强烈建议在使用中日韩(象形文字)、英的语言环境下采用这个设置。
7F6l;f'W\9X-A0
*`n GE I8f02、先使用OCR,再使用Windows API。
+^V)_R!u}ZY*k0    指示QTP首先尝试使用OCR机制从对象上去获取文本。如果未获取到文本,QTP就会以Windows API的机制去获取文本内容。
b`3o.B5|U H2{0
]*|}M\5_)]/WH03、仅使用Windows API方式。51Testing软件测试网5F!r2i2sv9vw@!b
    指示QTP仅采用基于Windows API的机制从对象上获取文本内容。51Testing软件测试网3R+n(k$Ot U1I

5Fm5z%a6Rp2~i04、仅使用OCR的方式。51Testing软件测试网~+c zOd&M
    指示QTP仅采用基于OCR的机制从对象上获取文本内容。51Testing软件测试网i3`$yY*vRa7p8}%Y
    在使用Windows Vista要使用这种方式。51Testing软件测试网kc)y bn7C

BJNf:B7z0=================================51Testing软件测试网$uiRzpwo
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun
+eB6eH H051Testing软件测试网WN#`n'M1m51Testing软件测试网Z }\{ N-Cv_(jh
上面的内容已经解释的很明确了,接下来我们通过TextArea Output Value看看效果。
9An2F9k*|3b0
Qj%M-| b tR0y1W0如下图所示,QTP针对几张图片的识别效果:51Testing软件测试网El:{Afbs
(一)、内容是51Testing的,QTP获取正确;内容是51Testing的G风格彩字,QTP获取错误(显示为IC_CHECK_PATTERN)51Testing软件测试网 E/p4l| u#H(I7l!}
51Testing软件测试网.v:\zb,qj7Y?:q V

{pn2L T\9bi051Testing软件测试网k tO7@0vS F b
(二)、内容是songfun的普通文本,QTP获取正确;内容是songfun的G风格彩字,QTP获取错误(也显示为IC_CHECK_PATTERN)
RZ+F$D?mu ] T051Testing软件测试网0Dz }C%O/O

L*T-bT M4{4d051Testing软件测试网4Sq._!} SPk7^+z9PF

Z+X+m#hH3Kd XW0有兴趣大家可以自己做一些图片,甚至可以用QQ的验证码图片来试验一下,看看OCR效果。
ol+].}6` |:Mqpd"qdF051Testing软件测试网 i!SH?!gX1?m|
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网hGEN#e
51Testing软件测试网WN#`n'M1m51Testing软件测试网Q'Q.Q+Pt7E^@c$H

TAG: 原创文章

假装不在 假装不在 发布于2008-10-10 20:17:57
好贴!
dionysus的个人空间 dionysus 发布于2008-10-13 14:25:18
厉害!又学习了!
heqingbluesky发布于2008-10-13 14:55:13
怎么跟我现在的项目这么靠近,^_^。
berylz发布于2008-10-14 14:53:00
我尝试捕获web页面上的验证码,但是创建text area output->选择IE里面的图形验证码区域后,报错“The object you selected does not support this operation”。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具        [ ]?w-{

2G H5B5Pw?]&[但是捕获图话板里面的图形,则没有问题。
^ G6e7v]f(c)Ns51Testing软件测试网www.51testing.comP3F
gM-}M

难道捕获IE页面里的图形,有什么特殊的地方吗?
faro213108发布于2008-10-14 16:28:31
我也遇到同5楼同样的问题,继续关注
password发布于2008-10-14 18:20:00
能说的具体点吗?还是不会操作
berylz发布于2008-10-14 18:28:03
我改用用maxthon进行获取,识别成功。因为maxthon被当作一个应用程序,而不是浏览器。
\D jSOwww.51testing.com![oAm'M~i3@
IE的问题在哪里呢?
大师兄--绝迹江湖 songfun 发布于2008-10-14 22:04:40
如果你测试的是Web系统,并且使用IE浏览器,那么可以尝试使用Text Output Value而不是 Text Area Output Value,因为QTP中,web不支持文本区域输出值。具体的你可以看看帮助。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具0T9xwe8ym+o(n
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具'H[H6` A Aa@

%Mnx"xK#En1e

QUOTE:

原帖由 berylz 于 2008-10-14 14:53 发表
/avV(q        S#c&Y软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具我尝试捕获web页面上的验证码,但是创建text area output->选择IE里面的图形验证码区域后,报错“The object you selected does not support this operation”。www.51testing.com"J!K{I9Ej'l{2x9}

,@6^jw1N|软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具但是捕获图话板里面的图形,则没有问题。www.51testing.com-` cuPT1}:Z
r#as


N
j*L        d Jc8i$uX软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
难道 ...

大师兄--绝迹江湖 songfun 发布于2008-10-14 22:05:50
你希望怎么具体?说来听听
%m?,aO%C.Rf软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具7ZHD
d,g
VZ{

QUOTE:

原帖由 password 于 2008-10-14 18:20 发表
^c5_4QxK)L~*D软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具能说的具体点吗?还是不会操作

trademark发布于2008-10-15 09:17:50
是啊,把代码共享一下啊。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
iu3TV!Z'L)s

我写了后发现提示为空,感觉没有识别出来
berylz发布于2008-10-15 10:54:58

QUOTE:

原帖由 songfun 于 2008-10-14 22:04 发表 www.51testing.comCp0J3wn1m(C lL c
如果你测试的是Web系统,并且使用IE浏览器,那么可以尝试使用Text Output Value而不是 Text Area Output Value,因为QTP中,web不支持文本区域输出值。具体的你可以看看帮助。
8joJ,{8`+M-q软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
"]A?\/O0}5F软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具"z@4RmQ
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具#T"u"iq
rH!G        o


m@ i Oo_vqQ-P中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务我尝试用Text Output Value,但是提示“Cannot retrieve text for this object”。www.51testing.com'rMTgc(W4}\
翻遍了user guide,其中只是提及软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具N!\R3x8x;g
“When checking text, QuickTest tries to retrieve the text directly from the
g5i4_6q)j_L ZuS软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具object. If QuickTest cannot retrieve the text in this manner (for example,中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务5^G5L4Y B
because the text is part of a picture), it tries to retrieve the text using an OCR中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
@!V4BAnBymG

(optical character recognition) mechanism.”中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务8G)Na$T4lTd1k
但是没有详细描述,如何能使用OCR获取web的图形文字。中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务5J]Ey6]7o-V `
www.51testing.com@2le,Fi$M9ag{
能否告知哪个帮助文档中有详细描述?软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具ktJs$r'e
j6{
h$^'u*?;A8z6F
R        z:x

[ 本帖最后由 berylz 于 2008-10-17 15:15 编辑 ]
password发布于2008-10-16 16:22:48
在验证码的位置只有insert output value,这里面没有对验证码的操作
ly200361发布于2008-10-17 11:36:56
我的Test output Value为什么是灰色的。并且51Testing软件测试网]4C3e5OC8jEW#t@
Window("Windows 图片和传真查看器").WinObject("ShImgVw:CZoomWnd")51Testing软件测试网4^0y7x'ir5wS#C
没有output属性呀。51Testing软件测试网4N!og[        \{
Xx5Q

新手。请教一下。谢谢了
天地无极 tiger_86 发布于2008-10-17 14:41:37
建议 楼主 能给一个 具体的操作 看着可能要好一点的 哈哈
Gwagm}n中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务谢谢 现在需要这样的技术 哈哈
爱之深则恨之切 centurystone 发布于2008-10-17 16:09:18
越来越强了
大师兄--绝迹江湖 songfun 发布于2008-10-19 23:13:36
已经写了第二篇文章,做了具体的操作讲解。链接:http://bbs.51testing.com/thread-129864-1-1.html软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具 B&dqlG
]y

中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务%g {
xhx&?:Kq_

软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具6_Is/I
c_'a,B

QUOTE:

原帖由 tiger_86 于 2008-10-17 14:41 发表 软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具0ki*v Z4v
WUJ

建议 楼主 能给一个 具体的操作 看着可能要好一点的 哈哈中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务,Bz9p[&[^K.Z^+gR
谢谢 现在需要这样的技术 哈哈

Kevin藏宝库 hsjzfling 发布于2008-10-20 11:01:07
强悍啊~看来9.5还是很值得一用的~~
angelia_liu的个人空间 angelia_liu 发布于2008-10-20 11:21:13
是不是这个方法对9.0不管用呀
大师兄--绝迹江湖 songfun 发布于2008-10-20 12:06:45
9.0没有这个支持,只有9.5才有,呵呵软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具 h#ZH#SBM&B

QUOTE:

原帖由 angelia_liu 于 2008-10-20 11:21 发表 软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
{&_Y!~ [!iO0U!v

是不是这个方法对9.0不管用呀

angelia_liu的个人空间 angelia_liu 发布于2008-10-20 17:28:27
回复 20# 的帖子
那再请问一下,9.0的怎么识别验证码?
我来说两句

(可选)

日历

« 2024-04-10  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 453484
  • 日志数: 138
  • 图片数: 4
  • 建立时间: 2006-11-26
  • 更新时间: 2013-08-30

RSS订阅

Open Toolbar