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

上一篇 / 下一篇  2009-05-18 12:45:24 / 个人分类:QTP

本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网Se/^%R?._*nCLE1]
,LE?,C\8n9Z!qq8077851Testing软件测试网-KI B+t(yz L51Testing软件测试网w@TKDR X[;EX;C
大家在使用QTP进行自动化测试的过程中经常会遇到图片验证码的问题——大家所关心的就是如何解决此类问题。
_XZ1i,k'}q[)F\ e01Y8F p6Ip2D(IYHP80778这里我们首先要去了解为什么会有图片验证码。其实验证码的本质作用就是防止有人利用工具(灌水机、注册机,当然也不小心包括了我们的自动化测试工具)恶意猜解登陆或者不停的注册和灌水的。因此如果我们完全寄希望于通过GUI识别来获取内容是不切实际的——先打好预防针,免得读者希望太大,失望更大,呵呵!51Testing软件测试网l{ M7{:_?8L1l;K
IUK p/LD6CS0下面说说验证码的解决思路:
T/d(b*XyZ:h$OS0A0R bT;nU^Oo80778其实解决图片验证码的思路有很多,我这里主要结合QTP9.5的新特性给大家介绍其中一种解决方案,就是利用它的OCR机制抓取文本内容。51Testing软件测试网)S4P7liD
~0s,Y W#y*zO/?4[0在QTP9.5中,对象识别能力有了进一步改善,其中针对文本识别方面进行了优化,引入了ABBYY公司的OCR解决方案——这个相关的功能体现在QTP菜单的“Tools-->Options-->General--Use text recognition mechanisms in this order”里,详细内容后面会有具体介绍。51Testing软件测试网#z h9Mh|q6[Xv51Testing软件测试网2n9Jw5O{(v
先来看看ABBYY是何许公司,登录他们的官方网站可以看到一段相关介绍:“ABBYY是世界OCR(光学字符识别)、ICR(手写体识别)和语言软件的领航者。ABBYY 致力于人工智能(AI)和语言软件开发。提供全套文档识别,转换和数据捕获技术的产品解决方案。”如果你使用过图像文档转换的软件,一定会听说过FineReader OCR Professional ,其实它就是ABBYY公司的产品,用官方的说法就是“将通过扫描仪、MFP 或数码相机生成的图像快速转换为可编辑和可搜索的电子格式,而且识别率很高”,说白了就是可以借助它先进的OCR机制“读”出图片里的文本内容,并转换为PDF之类的文档。51Testing软件测试网1~en$]mc SS51Testing软件测试网ZY5Zh v b toC+S&S
有了ABBYY这么强大的背后支持,QTP自然底气十足,那么QTP到底如何以OCR机制识别文本呢?我们首先先了解一下什么是OCR。51Testing软件测试网V%LG IN;uun+ei]
,DqnC&u,m80778打开“百度百科_OCR”,它的说明:“OCR(Optical Character Recognition,光学字符识别),是属于图型识别(Pattern Recognition,PR)的一门学问。其目的就是要让计算机知道它到底看到了什么,尤其是文字资料。 由于OCR是一门与识别率拔河的技术,因此如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。而根据文字资料存在的媒体介质不同,及取得这些资料的方式不同,就衍生出各式各样、各种不同的应用。”这里有个关键词:“正确率”,也就是“识别率”——既然不能够总是100%,我们自然不可能完全寄希望于通过QTP能够每次100%正确的去识别图片里的文本。尤其是“道高一尺魔高一丈”的今天,验证码加入了大量的干扰素,如扭曲、变形、错位、随机背景花纹,给OCR识别增加了很多难度——本来就不希望被软件识别到嘛。51Testing软件测试网&iop'y(B |pS
g}"cKVb051Testing软件测试网Ia-j-J*H0aO51Testing软件测试网7B)E g!oC|ayUI
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网5m4@ve&DF-_ Rd!Zo
/r,K^(O(Sy8077851Testing软件测试网WN#`n'M1m51Testing软件测试网;v,pHq T F51Testing软件测试网 q4QfO"`'cGWF
了解了OCR之后,我们再来看看QTP对应的这个设置。如前面所说,通过QTP菜单的“Tools-->Options”选中到“General--Use text recognition mechanisms in this order”,这里的四个选项就是对应的不同设置。我们看看帮助的描述(我做了翻译):51Testing软件测试网+N*g NX W
`/W6W8YiOR3i0=================================51Testing软件测试网1^w5WpK'T:_/r_(ek
x b#GamU;FM6J80778使用文本识别机制51Testing软件测试网1lr,L(U P
8lqP;qNu1P p051Testing软件测试网L~ _.jD1TUd
FwN0][]qn0指定QTP在采用 “文本”或者“文本区域” 的 检查点或输出值 的步骤时,捕获文本内容所使用的文本识别机制。51Testing软件测试网0sz YH/?T
*{E!B Y,We"J1R&_80778以下有三种识别方式:51Testing软件测试网:^ Bfyu:_M51Testing软件测试网k].O4O*az~3B,U
1、先使用WindowsAPI,再使用OCR(默认)。51Testing软件测试网 F*xz}I](i!\
(aAe't3M*T4Q!L80778    指示QTP首先尝试以基于Windows API的机制从对象上直接获取文本内容。如果未获取到文本(比如,文本属于图片的一部分),QTP就会使用OCR的机制尝试获取这段文本。51Testing软件测试网eo0j3{(Y ~K9\:J
!l W~-x-@ W:W3?f0    强烈建议在使用中日韩(象形文字)、英的语言环境下采用这个设置。51Testing软件测试网_2r j ik*P(t_ z,O;[51Testing软件测试网+o0Hi2l\;g:U:w

/gx9G|X)\)x0#~&x-W[] Q8k(m807782、先使用OCR,再使用Windows API。51Testing软件测试网q m&Hy[i`
!XHm}O"]80778    指示QTP首先尝试使用OCR机制从对象上去获取文本。如果未获取到文本,QTP就会以Windows API的机制去获取文本内容。51Testing软件测试网xnYb-Yk7Soy
TVA?3C4S3W8077851Testing软件测试网&Yz'`Fz51Testing软件测试网's ldkF x
3、仅使用Windows API方式。51Testing软件测试网P%_*OJ,{,RB_9~51Testing软件测试网4qK7]BXFT
    指示QTP仅采用基于Windows API的机制从对象上获取文本内容。
5lXm/d8U7|Hn6`1a|$r0#c6{#uWNM8_8077851Testing软件测试网{k1JSDC t#^ee
Ym#g.Q-d1d9H!HI807784、仅使用OCR的方式。51Testing软件测试网9Q sS7{"fHS w~D51Testing软件测试网FHW!t5e8MQ"}m+rF
    指示QTP仅采用基于OCR的机制从对象上获取文本内容。51Testing软件测试网A)A-|:F5c\\W
u%Icbu-i&|0    在使用WindowsVista要使用这种方式。
xvm](LqI0\~E ? w8077851Testing软件测试网&MO,@5~_XWXb ? i.d%E
/CBV"b&v\ W0=================================51Testing软件测试网i2W-lRAQ51Testing软件测试网5G F.O4K9~!\h1v
本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网 Vy i!e)v;i"?
t:K xfRP#Vw051Testing软件测试网WN#`n'M1m51Testing软件测试网J)QQF qGyo3\51Testing软件测试网V$T ym_)Q+c#_"O
上面的内容已经解释的很明确了,接下来我们通过TextArea Output Value看看效果。51Testing软件测试网;@uV0p;QHK Q51Testing软件测试网@-U}(Ut
51Testing软件测试网iG%`4E4n!YA0D/]
qL^If`7a0如下图所示,QTP针对几张图片的识别效果:51Testing软件测试网BA vfH&uZFP
y`d U\G%?}0(一)、内容是51Testing的,QTP获取正确;内容是51Testing的G风格彩字,QTP获取错误(显示为IC_CHECK_PATTERN)51Testing软件测试网Yg{m#or@cP4n51Testing软件测试网#ONC6e1a:?}
51Testing软件测试网^d+E5bIn/aw+o51Testing软件测试网MO$l |{/i
51Testing软件测试网UzX Y@?9n%E
1hb;D9^+P051Testing软件测试网&E7Zf Fm51Testing软件测试网l(_$r6B2n P&U8F
(二)、内容是songfun的普通文本,QTP获取正确;内容是songfun的G风格彩字,QTP获取错误(也显示为IC_CHECK_PATTERN)51Testing软件测试网1W2](Wu9Xq
1m BL m;S ^}Kz P8077851Testing软件测试网Z'r M%j@6g9o^ GIy51Testing软件测试网7Xt/{(SB PG,y TK j
51Testing软件测试网erH.Q^](w
;z BlfrI*YL*J0
^*X{bI~(b01`9Vn$@x#Vw/Y ZT8077851Testing软件测试网:hA*g\-~$|2S;a51Testing软件测试网L5mF}[I o yY
有兴趣大家可以自己做一些图片,甚至可以用QQ的验证码图片来试验一下,看看OCR效果。51Testing软件测试网Fz rtia[2_ gq51Testing软件测试网S w hT O+K R
51Testing软件测试网&o$]sp7Re
U`"o"B~!C'Nv0本文出自songfun的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?songfun51Testing软件测试网'{$d#e%AF#xCEG
hIHvq!T qv&b0`8077851Testing软件测试网WN#`n'M1m51Testing软件测试网nW3O8x2w(j1S
D`;i'J#iCj(P'X80778

TAG:

 

评分:0

我来说两句

Open Toolbar