心念旧安,夙夜忧叹。

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

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

查看( 15113 ) / 评论( 29 )
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun
!U e9^ l _GT051Testing软件测试网 cZ5q?4xUyZ'L
大家在使用QTP进行自动化测试的过程中经常会遇到图片验证码的问题——大家所关心的就是如何解决此类问题。
-E%rY:RS,v{ T1X0这里我们首先要去了解为什么会有图片验证码。其实验证码的本质作用就是防止有人利用工具(灌水机、注册机,当然也不小心包括了我们的自动化测试工具)恶意猜解登陆或者不停的注册和灌水的。因此如果我们完全寄希望于通过GUI识别来获取内容是不切实际的——先打好预防针,免得读者希望太大,失望更大,呵呵!
6^(Vh;x K5H%]#H7G0下面说说验证码的解决思路:51Testing软件测试网L{b"?y@L
其实解决图片验证码的思路有很多,我这里主要结合QTP9.5的新特性给大家介绍其中一种解决方案,就是利用它的OCR机制抓取文本内容。
A6br|A#r.N9P0在QTP9.5中,对象识别能力有了进一步改善,其中针对文本识别方面进行了优化,引入了ABBYY公司的OCR解决方案——这个相关的功能体现在QTP菜单的“Tools-->Options-->General--Use text recognition mechanisms in this order”里,详细内容后面会有具体介绍。
ZoEkV R1[(_p+G0先来看看ABBYY是何许公司,登录他们的官方网站可以看到一段相关介绍:“ABBYY是世界OCR(光学字符识别)、ICR(手写体识别)和语言软件的领航者。ABBYY 致力于人工智能(AI)和语言软件开发。提供全套文档识别,转换和数据捕获技术的产品解决方案。”如果你使用过图像文档转换的软件,一定会听说过FineReader OCR Professional ,其实它就是ABBYY公司的产品,用官方的说法就是“将通过扫描仪、MFP 或数码相机生成的图像快速转换为可编辑和可搜索的电子格式,而且识别率很高”,说白了就是可以借助它先进的OCR机制“读”出图片里的文本内容,并转换为PDF之类的文档。51Testing软件测试网J:Bd\"a.rD
有了ABBYY这么强大的背后支持,QTP自然底气十足,那么QTP到底如何以OCR机制识别文本呢?我们首先先了解一下什么是OCR。51Testing软件测试网k(P6{1o R5t Z0Q0|
打开“百度百科_OCR”,它的说明:“OCR(Optical Character Recognition,光学字符识别),是属于图型识别(Pattern Recognition,PR)的一门学问。其目的就是要让计算机知道它到底看到了什么,尤其是文字资料。 由于OCR是一门与识别率拔河的技术,因此如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。而根据文字资料存在的媒体介质不同,及取得这些资料的方式不同,就衍生出各式各样、各种不同的应用。”这里有个关键词:“正确率”,也就是“识别率”——既然不能够总是100%,我们自然不可能完全寄希望于通过QTP能够每次100%正确的去识别图片里的文本。尤其是“道高一尺魔高一丈”的今天,验证码加入了大量的干扰素,如扭曲、变形、错位、随机背景花纹,给OCR识别增加了很多难度——本来就不希望被软件识别到嘛。
%nbS@@i:Yn051Testing软件测试网ED R@4ISd5Eb
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网R2C2zG/Zs1]w
51Testing软件测试网WN#`n'M1m51Testing软件测试网3\%@4z*~K
了解了OCR之后,我们再来看看QTP对应的这个设置。如前面所说,通过QTP菜单的“Tools-->Options”选中到“General--Use text recognition mechanisms in this order”,这里的四个选项就是对应的不同设置。我们看看帮助的描述(我做了翻译):51Testing软件测试网v{n&d#U8N1n/X
=================================
n:J5n%]+H0使用文本识别机制
4|gL W{4Rx051Testing软件测试网)HJwWg*C`
指定QTP在采用 “文本”或者“文本区域” 的 检查点或输出值 的步骤时,捕获文本内容所使用的文本识别机制。51Testing软件测试网F+@*ctYg3G:Q
以下有三种识别方式:51Testing软件测试网!D V1cx8t?
1、先使用Windows API,再使用OCR(默认)。
;{ Q f}y+E!?Xu x0    指示QTP首先尝试以基于Windows API的机制从对象上直接获取文本内容。如果未获取到文本(比如,文本属于图片的一部分),QTP就会使用OCR的机制尝试获取这段文本。
4n:\"cMss P0    强烈建议在使用中日韩(象形文字)、英的语言环境下采用这个设置。
BN-gvm3ybx051Testing软件测试网$q&hUr;S5e+r
2、先使用OCR,再使用Windows API。51Testing软件测试网f4SVcBA)y.k$Z
    指示QTP首先尝试使用OCR机制从对象上去获取文本。如果未获取到文本,QTP就会以Windows API的机制去获取文本内容。51Testing软件测试网U ~Z G3} m
51Testing软件测试网5c2IA\k} E7c
3、仅使用Windows API方式。
xZ*AD4ANSv0    指示QTP仅采用基于Windows API的机制从对象上获取文本内容。
K3D;_#I!sM V'Ed051Testing软件测试网!x x0l8TZh
4、仅使用OCR的方式。51Testing软件测试网KpuS:Xgu
    指示QTP仅采用基于OCR的机制从对象上获取文本内容。51Testing软件测试网\2r`4{G$_n+gA
    在使用Windows Vista要使用这种方式。51Testing软件测试网*TdI:|9H ~$g

zW*S'J$R2p0=================================51Testing软件测试网iG0jA9^Q8oY:Ii
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网D jKbbnLwD
51Testing软件测试网WN#`n'M1m51Testing软件测试网c%tv-]II6Y p
上面的内容已经解释的很明确了,接下来我们通过TextArea Output Value看看效果。
yK$da!R9zn0
t3H4b S yu{k0如下图所示,QTP针对几张图片的识别效果:51Testing软件测试网X3?d4l*TN_ n
(一)、内容是51Testing的,QTP获取正确;内容是51Testing的G风格彩字,QTP获取错误(显示为IC_CHECK_PATTERN)51Testing软件测试网&g/y:]!z0w

M+d)jSpFR[3M0
6G `8r0S};T0
Atu+S8L,SI?$@0(二)、内容是songfun的普通文本,QTP获取正确;内容是songfun的G风格彩字,QTP获取错误(也显示为IC_CHECK_PATTERN)51Testing软件测试网 l Y+n1e FpZ

.s j,o/X;mS,K051Testing软件测试网*`^7c `*r
51Testing软件测试网.CMVRV}Huq

o.qQn.p#\V0有兴趣大家可以自己做一些图片,甚至可以用QQ的验证码图片来试验一下,看看OCR效果。51Testing软件测试网)S3G0q&k]
51Testing软件测试网5AT*a CtX4r ?%kSF
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun
6n3Nn6w._051Testing软件测试网WN#`n'M1m
t!RK(A+R C#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”。
il*oF3li
] `q`www.51testing.com

2}(?'b)H_gw+q[#w中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务但是捕获图话板里面的图形,则没有问题。www.51testing.com.ed#e(sc&im
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具T&D
Mk
BP

难道捕获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被当作一个应用程序,而不是浏览器。
!ObX+D6p"X
{4t6H中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务

.v BWa2i z&\#R2G4@软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具IE的问题在哪里呢?
大师兄--绝迹江湖 songfun 发布于2008-10-14 22:04:40
如果你测试的是Web系统,并且使用IE浏览器,那么可以尝试使用Text Output Value而不是 Text Area Output Value,因为QTP中,web不支持文本区域输出值。具体的你可以看看帮助。51Testing软件测试网[\Rkd`+g{

6^.Af        x2BO^$b软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务;W~f.J~

QUOTE:

原帖由 berylz 于 2008-10-14 14:53 发表
4gs\$R#X S软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具我尝试捕获web页面上的验证码,但是创建text area output->选择IE里面的图形验证码区域后,报错“The object you selected does not support this operation”。中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务[5H&w/S$n]

Q_n\edI Q*f51Testing软件测试网但是捕获图话板里面的图形,则没有问题。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具6p6U}%} ox:L&v@
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具.Zl+VU;?9j
难道 ...

大师兄--绝迹江湖 songfun 发布于2008-10-14 22:05:50
你希望怎么具体?说来听听
1T_l!t3~www.51testing.com中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务vBq)Q_5z

QUOTE:

原帖由 password 于 2008-10-14 18:20 发表 软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具6G$eM,b+r
F

能说的具体点吗?还是不会操作

trademark发布于2008-10-15 09:17:50
是啊,把代码共享一下啊。
w+n.}j?D2^;s7`kMwww.51testing.com我写了后发现提示为空,感觉没有识别出来
berylz发布于2008-10-15 10:54:58

QUOTE:

原帖由 songfun 于 2008-10-14 22:04 发表 ;e,V{1`'mY
如果你测试的是Web系统,并且使用IE浏览器,那么可以尝试使用Text Output Value而不是 Text Area Output Value,因为QTP中,web不支持文本区域输出值。具体的你可以看看帮助。
.ojU*S#p软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具51Testing软件测试网I_'AK[['e8SZ

9E!]UT^A(i!Y中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具3PU)F?g4OY0J&z

,fx%}rAYv'i.?软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具我尝试用Text Output Value,但是提示“Cannot retrieve text for this object”。中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务{&Xw){U
AM

翻遍了user guide,其中只是提及
Op'A"g"j*x!W vwww.51testing.com“When checking text, QuickTest tries to retrieve the text directly from the中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务1@6}JU5P
rK(U*oY

object. If QuickTest cannot retrieve the text in this manner (for example,
1a&ZXn S51Testing软件测试网because the text is part of a picture), it tries to retrieve the text using an OCR中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务"E9k
KK[TG9V
Rm:U

(optical character recognition) mechanism.”
?t0_
{&i7MOP软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
但是没有详细描述,如何能使用OCR获取web的图形文字。
HW9V        uu51Testing软件测试网_W Z(G!Hl
能否告知哪个帮助文档中有详细描述?
k)U2?$KO4_A中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
*c[5Jb#R7RONy0hp0y软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具[ 本帖最后由 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为什么是灰色的。并且
,i8ps5JqD软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具 Window("Windows 图片和传真查看器").WinObject("ShImgVw:CZoomWnd")
)?5ig;MB8@8ywww.51testing.com没有output属性呀。
&ej1p[Q!W `中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务新手。请教一下。谢谢了
天地无极 tiger_86 发布于2008-10-17 14:41:37
建议 楼主 能给一个 具体的操作 看着可能要好一点的 哈哈www.51testing.com ^hjAHW%A
谢谢 现在需要这样的技术 哈哈
爱之深则恨之切 centurystone 发布于2008-10-17 16:09:18
越来越强了
大师兄--绝迹江湖 songfun 发布于2008-10-19 23:13:36
已经写了第二篇文章,做了具体的操作讲解。链接:http://bbs.51testing.com/thread-129864-1-1.html
fU L$Q!F#|h|51Testing软件测试网
:s)}%@UH
F软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具

7t"v'rzVq中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务

QUOTE:

原帖由 tiger_86 于 2008-10-17 14:41 发表
%P7fr eb%_srDf Ywww.51testing.com建议 楼主 能给一个 具体的操作 看着可能要好一点的 哈哈www.51testing.com*k2j,q~v`_1R&m4Z
谢谢 现在需要这样的技术 哈哈

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才有,呵呵www.51testing.comS
fm8n{0L

QUOTE:

原帖由 angelia_liu 于 2008-10-20 11:21 发表 51Testing软件测试网2a}k'hFV(k ]
M

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

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

(可选)

日历

« 2019-10-10  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

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

RSS订阅

Open Toolbar