手把手教你TestComplete_验证码识别

来源:互联网 发布:淘宝买恒压阀会查吗 编辑:程序博客网 时间:2024/04/30 22:21

手把手教你TestComplete_验证码识别

  

  

今天blog开张,来个重量级的,我想需要这个的人应该还是挺多的。

 

在日常测试工作中,通常打开浏览器之后就是登录,为了避免灌水或者工具的黑客行为,现在的登录界面通常都会提供验证码图片来约束这些行为。但是验证码给自动化测试带来了很大的麻烦,如果只是登录一次也还好对付,大不了打开页面才开始录制工作。但是有的时候,需要使用不同权限的用户进行登录,这时候就无法绕开验证码了。

 

搜索网上的资料,信息很多很多,不过可用的几乎没有,除非需要money的商业验证码识别软件。在网上持续关注这个问题,有天找到了这个东西,好像是个老外公司的产品,是控件来着,在例子的基础上改巴改巴以后,发现对于简单的验证码识别率还是非常高的。好在公司的系统都是使用的简单的验证码,对于我,这已经足够了。不敢专享,共享给大家。

 

 

附件:参考我的资源中:手把手教你TestComplete_验证码识别.rar

 手把手教你TestComplete_验证码识别.rar

 

 

内部包含:

Main.svb:这是TestComlete登录一个有验证码的页面的例子程序;

readme.txt:描述步骤

Install: 需要的动态链接库

Checkvrf: 改造的验证码识别工具

 

 

我先描述一下使用步骤吧:

1.运行 .\install\Install.bat

2.运行 .\install\Patch.reg

 

TestComlete代码:

3.拷贝图片为 .\checkvrf\v1.jpg

4.修改 .\checkvrf\in.txt 内容为v1.jpg

5.运行:.\checkvrf\chkvrf.exe

6.读出文件 out.txt

7.删除v1.jpg和out.txt

 

 

对于这个工具对于简单的验证码是没有太大问题的,如果有问题,可以把图片发给我,调整识别参数试试。

 

 

好吧,讲讲如何使用这个工具的:

 

Sub Main

 

dim p

 

‘打开Iexplorer进程,并且打开登录界面

Set p = TestedApps.Items(0).Run

If Not p.Exists Then

  Log.Warning("Application was not launched")

End If

 

‘进行登录

call LoginS

 

End Sub

 

Sub LoginS

  Dim iexplore

  Dim table

  Dim table2

  Dim textbox

  Dim passwordBox

 

  dim img1

  dim pic1

  dim strvrf 

 

‘这部分很简单,就是输入用户名和密码

  Set iexplore = Aliases.IEXPLORE

    Set table = iexplore.pageHttp101896449003Managerweb.formLogonform.table.cellLogincn.table

  Set table2 = table.cell.table

  Set textbox = table2.cell.textboxUsername

  textbox.Text = "root"

  Set passwordBox = table2.cell1.passwordboxPassword

  passwordBox.Text = "password"

  Set textbox = table2.cell2.textboxChecknum

 

‘这里是最重要的部分

‘得到图片对象的引用

  set img1=Sys.Process("IEXPLORE").Page("http://10.18.96.44:9003/managerWeb/").Form("logonForm").Table(1).Cell(1, 0).Table(0).Cell(1, 0).Table(0).Cell(3, 1).Image("image_jsp")

 

‘得到该对象的图片

  set pic1=img1.Picture(0, 0,img1.Width,img1.Height,false )

 

‘把这个对象的图片保存到识别工具目录下

  call pic1.savetofile(projectsuite.Path & "\checkvrf\v1.jpg")

 

‘调用验证码识别工具

  call Win32API.WinExec(projectsuite.Path & "\checkvrf\chkvrf.exe",SW_HIDE)

 

‘这里得稍微等等,识别是需要时间的,不过很快的,顶天也就一两秒吧

  while not FblnFileExist(projectsuite.Path & "\checkvrf\out.txt")

    BuiltIn.delay 3000,""

  Wend

 

‘读出识别结果

  strvrf=aqFile.ReadWholeTextFile(projectsuite.Path & "\checkvrf\out.txt",aqFile.ctANSI) 

 

‘填写验证码,通关啦

  textbox.Text = strvrf

  table.cell1.table.cell.imagebuttonHttp101896449003Manag.Click

 

  aqFile.Delete(projectsuite.Path & "\checkvrf\v1.jpg")

  aqFile.Delete(projectsuite.Path & "\checkvrf\out.txt")

 

End Sub

 

Function FblnFileExist(strFile)

  If Not aqFile.Exists(strFile) Then

    FblnFileExist=False

  Else

    FblnFileExist=True

  End If

End Function

 

 

估计同学们早就没闲工夫看这段代码的解释了,直接就下载了验证工具开始倒腾了。哦,是的,CSDN上传资源使用的验证码应该没啥问题。

 

 

God bless u!

 

 

注:

如果你的图片无法识别,可以发邮件到 Testingba@163.com或2310095680@qq.com ,要不加qq2310095680发图片给我也行,试试吧,简单的估计能对付,太难的就算了