OCR识别、训练及在LR中使用

393 阅读2分钟

首先要下载:tesseract

下载地址:zh-tw.osdn.net/projects/sf…

打开链接直接下载到本地后,安装

1、安装完成之后:打开DOS界面,输入tesseract:

如果出现如上输出,表示安装正常。
我准备了一张验证码regcode.jpg放在D盘根目录下

2、在DOS上执行

3、查看D盘根目录下的result

参考命令地址
www.51testing.com/html/14/877…
识别得不是很准确,需要另外下载学习工具训练 训练
学习的参考文章
read01.com/QEGy2P.html…
训练工具下载 JTestBoxEditor
sourceforge.net/projects/vi… sourceforge.net/projects/vi…
训练的操作
www.cnblogs.com/xpwi/p/9604…

LR中使用OCR脚本

识别验证码的方式:
** 1. LR访问登录页面,在./result1/Iteration1/中生成*ValidateCode.UNK 文件即为验证码
** 2. LR调用外部命令执行tesseract.exe识别验证码,将结果保存到txt文件中
** 3. LR读取txt文件获取验证码,保存为参数
** 4. 得到验证码参数后就可以实现登录功能了
以下脚本实现了在有验证码情况下的自动登录,注意请将ValidateCode.py和tesseract.exe都拷贝到脚本目录!

...VB
Action()
{
#define MAX_NAME_LEN 4
       long filedes;    //保存文件句柄
char result[4];
        //登录页面
web_url("log_page", 
"URL=http://www.XXXXXX.com/Member/LoginForm.do", 
"TargetFrame=", 
"Resource=0", 
"RecContentType=text/html", 
"Referer=", 
"Snapshot=t1.inf", 
"Mode=HTML", 
LAST);
lr_think_time(5);
       //使用python调用外部tesseract.exe文件识别验证码
system("E:\\SOFTWARE\\Python27\\python.exe ValidateCode.py");
if((filedes = fopen("ValidateCode.txt","rt")) == NULL)
{
lr_output_message("Open File Failed!");
return -1;   
}
fread(result,4,1,filedes);
fclose(filedes);
lr_save_var( result, MAX_NAME_LEN, 0, "validate"); //截取任意字符串长度
       //提交登录信息
web_url("login", 
"URL=http://www.XXXXXX.com/Cart/LoginResult.do?loginId=user_1234_5678&password=password&validateCode={validate}&mid=0&......", 
"TargetFrame=", 
"Resource=0", 
"RecContentType=text/html", 
"Referer=http://www.XXXXXX.com/Member/LoginForm.do", 
"Snapshot=t4.inf", 
"Mode=HTML", 
LAST);
   //查看是否登录成功
   web_url("member_index",
   "URL=http://www.XXXXXX.com/Member/index.jsp?mid=0",
   "Mode=HTML",
   LAST);
return 0;
}

ValidateCode.py文件内容如下:
#encoding=gbk
import sys
import os
cur = os.getcwd()   //获取当前运行软件的目录
vcdir = os.path.join(cur,"result1\\Iteration1")
for f in os.listdir(vcdir) :
    if f.endswith("ValidateCode.UNK"):    //
判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型
        file = os.path.join(vcdir,f)
cmd = "tesseract.exe "+file+" ./ValidateCode -1";
os.system(cmd);
...