心念旧安,夙夜忧叹。

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

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

查看( 16574 ) / 评论( 29 )
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网/ui$@(se7y mR

,iM|/`5|6`.w3J~M0大家在使用QTP进行自动化测试的过程中经常会遇到图片验证码的问题——大家所关心的就是如何解决此类问题。51Testing软件测试网@,F,Kz*Y|
这里我们首先要去了解为什么会有图片验证码。其实验证码的本质作用就是防止有人利用工具(灌水机、注册机,当然也不小心包括了我们的自动化测试工具)恶意猜解登陆或者不停的注册和灌水的。因此如果我们完全寄希望于通过GUI识别来获取内容是不切实际的——先打好预防针,免得读者希望太大,失望更大,呵呵!
a'\4HA'fQ0下面说说验证码的解决思路:
3Dng"@"d1aj0其实解决图片验证码的思路有很多,我这里主要结合QTP9.5的新特性给大家介绍其中一种解决方案,就是利用它的OCR机制抓取文本内容。
}*FK3tTJ#iK0在QTP9.5中,对象识别能力有了进一步改善,其中针对文本识别方面进行了优化,引入了ABBYY公司的OCR解决方案——这个相关的功能体现在QTP菜单的“Tools-->Options-->General--Use text recognition mechanisms in this order”里,详细内容后面会有具体介绍。51Testing软件测试网 W~O1R Q?Y3y!Xx$dv
先来看看ABBYY是何许公司,登录他们的官方网站可以看到一段相关介绍:“ABBYY是世界OCR(光学字符识别)、ICR(手写体识别)和语言软件的领航者。ABBYY 致力于人工智能(AI)和语言软件开发。提供全套文档识别,转换和数据捕获技术的产品解决方案。”如果你使用过图像文档转换的软件,一定会听说过FineReader OCR Professional ,其实它就是ABBYY公司的产品,用官方的说法就是“将通过扫描仪、MFP 或数码相机生成的图像快速转换为可编辑和可搜索的电子格式,而且识别率很高”,说白了就是可以借助它先进的OCR机制“读”出图片里的文本内容,并转换为PDF之类的文档。
)|H W8_mYj2h0有了ABBYY这么强大的背后支持,QTP自然底气十足,那么QTP到底如何以OCR机制识别文本呢?我们首先先了解一下什么是OCR。51Testing软件测试网:M l5C$cl
打开“百度百科_OCR”,它的说明:“OCR(Optical Character Recognition,光学字符识别),是属于图型识别(Pattern Recognition,PR)的一门学问。其目的就是要让计算机知道它到底看到了什么,尤其是文字资料。 由于OCR是一门与识别率拔河的技术,因此如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。而根据文字资料存在的媒体介质不同,及取得这些资料的方式不同,就衍生出各式各样、各种不同的应用。”这里有个关键词:“正确率”,也就是“识别率”——既然不能够总是100%,我们自然不可能完全寄希望于通过QTP能够每次100%正确的去识别图片里的文本。尤其是“道高一尺魔高一丈”的今天,验证码加入了大量的干扰素,如扭曲、变形、错位、随机背景花纹,给OCR识别增加了很多难度——本来就不希望被软件识别到嘛。51Testing软件测试网&[S!Wh4^o |/?:W
51Testing软件测试网*ud!} t ^R4a+J_%Bj
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun
/S9D w.W/r:n-Hzg051Testing软件测试网WN#`n'M1m51Testing软件测试网TPYIs s3y.eyJ
了解了OCR之后,我们再来看看QTP对应的这个设置。如前面所说,通过QTP菜单的“Tools-->Options”选中到“General--Use text recognition mechanisms in this order”,这里的四个选项就是对应的不同设置。我们看看帮助的描述(我做了翻译):51Testing软件测试网T$t$Pkv(rJ'e
=================================51Testing软件测试网$y!`Y ^/m:^8r
使用文本识别机制
!@#]^ I"Ha0
,G \9I-bQU/\0指定QTP在采用 “文本”或者“文本区域” 的 检查点或输出值 的步骤时,捕获文本内容所使用的文本识别机制。51Testing软件测试网(xQ.Ny#cx3]`
以下有三种识别方式:51Testing软件测试网h&V B*V}J
1、先使用Windows API,再使用OCR(默认)。51Testing软件测试网:`3c-}iV[xsX
    指示QTP首先尝试以基于Windows API的机制从对象上直接获取文本内容。如果未获取到文本(比如,文本属于图片的一部分),QTP就会使用OCR的机制尝试获取这段文本。51Testing软件测试网*[.G+G9]+N7IT,k_ t
    强烈建议在使用中日韩(象形文字)、英的语言环境下采用这个设置。51Testing软件测试网-},z!m2zh Sk

ayr;p(oj02、先使用OCR,再使用Windows API。51Testing软件测试网 C$_;Bd*gZl&[
    指示QTP首先尝试使用OCR机制从对象上去获取文本。如果未获取到文本,QTP就会以Windows API的机制去获取文本内容。51Testing软件测试网d(r t[&Fk*OH k
51Testing软件测试网8y5}c,| u v1j.Ej
3、仅使用Windows API方式。
KpO,d\x0    指示QTP仅采用基于Windows API的机制从对象上获取文本内容。51Testing软件测试网Mr(d? aA(}
51Testing软件测试网E!a2f"gz/p kP
4、仅使用OCR的方式。
LR2^(wH I H+s'xiY0    指示QTP仅采用基于OCR的机制从对象上获取文本内容。51Testing软件测试网U P"m*tzl#EfS{
    在使用Windows Vista要使用这种方式。
V1q\6pI051Testing软件测试网.Y2w}(S sNq7DFfPd
=================================51Testing软件测试网0Zq;Q+e^k+Q
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun
3|^&uR,yA"M#b051Testing软件测试网WN#`n'M1m51Testing软件测试网+ah3Tf&S1e]
上面的内容已经解释的很明确了,接下来我们通过TextArea Output Value看看效果。
_uJV [1Z*U-w051Testing软件测试网F#Am(F N5Y4nO+{C N
如下图所示,QTP针对几张图片的识别效果:51Testing软件测试网+{h`!B!V%F
(一)、内容是51Testing的,QTP获取正确;内容是51Testing的G风格彩字,QTP获取错误(显示为IC_CHECK_PATTERN)
\E*[5U sx0
?I8rs.f ?Mhb8q*y&F051Testing软件测试网I(u7t3ZL%cGUU
51Testing软件测试网A"_ aJ`j5R(`@-X"y
(二)、内容是songfun的普通文本,QTP获取正确;内容是songfun的G风格彩字,QTP获取错误(也显示为IC_CHECK_PATTERN)
Y)C Qq v0
??%[ B,Bg0
4SX%nxCf+q@ O051Testing软件测试网qJ!SH&O+Mx` l9a?

([#hf WeY-U6B4@}-|0有兴趣大家可以自己做一些图片,甚至可以用QQ的验证码图片来试验一下,看看OCR效果。51Testing软件测试网|(F"m1`~7PF
51Testing软件测试网1fA1s#Z#ct E
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网M{8D fB'D^\
51Testing软件测试网WN#`n'M1m
&J'N ar4sI;^M0

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”。
2M]t
e"o6bC7t2M软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具)E%DpVg yk
但是捕获图话板里面的图形,则没有问题。www.51testing.comLDlZ3to

"ZW0r/ot51Testing软件测试网难道捕获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被当作一个应用程序,而不是浏览器。中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务(w-l|l2PB
中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务Ducc6pnp2p
M'?

IE的问题在哪里呢?
大师兄--绝迹江湖 songfun 发布于2008-10-14 22:04:40
如果你测试的是Web系统,并且使用IE浏览器,那么可以尝试使用Text Output Value而不是 Text Area Output Value,因为QTP中,web不支持文本区域输出值。具体的你可以看看帮助。
D+yFUS
uwww.51testing.com

gDW(Q {K9F软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具?&A:]m$z

QUOTE:

原帖由 berylz 于 2008-10-14 14:53 发表 软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具_*KO5e G^gd?
我尝试捕获web页面上的验证码,但是创建text area output->选择IE里面的图形验证码区域后,报错“The object you selected does not support this operation”。
(Q0d3_x-g&^1i中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
O/y;|        Ou4|%\W\?$p(a?中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务但是捕获图话板里面的图形,则没有问题。{,Y f
Fz7GM gw.}

www.51testing.com.?x+[#UY3v#D
难道 ...

大师兄--绝迹江湖 songfun 发布于2008-10-14 22:05:50
你希望怎么具体?说来听听
(B
sr dSW'Ewww.51testing.com
Wc2\0u        R1OW
y

QUOTE:

原帖由 password 于 2008-10-14 18:20 发表 51Testing软件测试网r-w,?;uEO
能说的具体点吗?还是不会操作

trademark发布于2008-10-15 09:17:50
是啊,把代码共享一下啊。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具#M-IiQN |
我写了后发现提示为空,感觉没有识别出来
berylz发布于2008-10-15 10:54:58

QUOTE:

原帖由 songfun 于 2008-10-14 22:04 发表
2p        o!Ri4w5{5IB2]如果你测试的是Web系统,并且使用IE浏览器,那么可以尝试使用Text Output Value而不是 Text Area Output Value,因为QTP中,web不支持文本区域输出值。具体的你可以看看帮助。
3J/p.Gi`juwww.51testing.com
N6bF7jsHg S软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具#p G5P:Rz8p        K8g
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具-{4h5l8bh,EIM@
软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具!N#K"`"t        X8J`t&\1]
我尝试用Text Output Value,但是提示“Cannot retrieve text for this object”。
Ea}.\+C Gdjx51Testing软件测试网翻遍了user guide,其中只是提及
Tj
K^#T*A(?2Rwww.51testing.com
“When checking text, QuickTest tries to retrieve the text directly from the中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务ZYs(_
@
Z

object. If QuickTest cannot retrieve the text in this manner (for example,
l| WVx{ h;Nuwww.51testing.combecause the text is part of a picture), it tries to retrieve the text using an OCR
b
uwf(a M.U
(optical character recognition) mechanism.”
,t{CU:S软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具但是没有详细描述,如何能使用OCR获取web的图形文字。www.51testing.comT-WJ9z[RYo~
中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务9vu"?V2g
能否告知哪个帮助文档中有详细描述?51Testing软件测试网:z0n.u#Sg-@

\:bY3`M.m
EOF软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
[ 本帖最后由 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软件测试网j"u,_9r y%t
Window("Windows 图片和传真查看器").WinObject("ShImgVw:CZoomWnd")软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具9@f$wA$]%@:P
没有output属性呀。51Testing软件测试网        fQ,T/tz5M
新手。请教一下。谢谢了
天地无极 tiger_86 发布于2008-10-17 14:41:37
建议 楼主 能给一个 具体的操作 看着可能要好一点的 哈哈
0v5O}.GBsUp!i3l8S软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具谢谢 现在需要这样的技术 哈哈
爱之深则恨之切 centurystone 发布于2008-10-17 16:09:18
越来越强了
大师兄--绝迹江湖 songfun 发布于2008-10-19 23:13:36
已经写了第二篇文章,做了具体的操作讲解。链接:http://bbs.51testing.com/thread-129864-1-1.htmlwww.51testing.com,^#c A
e}o+G$s6R

i6u4Hi
D)G7j9o
Q2@

_Ejbc~n

QUOTE:

原帖由 tiger_86 于 2008-10-17 14:41 发表
OR]'u_Jwww.51testing.com建议 楼主 能给一个 具体的操作 看着可能要好一点的 哈哈软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具1p5lE/P
x0L

谢谢 现在需要这样的技术 哈哈

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才有,呵呵
$FR
lg L#pE        @软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具

QUOTE:

原帖由 angelia_liu 于 2008-10-20 11:21 发表
1vd.H#q BL0t9^
X51Testing软件测试网
是不是这个方法对9.0不管用呀

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

(可选)

日历

« 2024-04-26  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar