首先要下载: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);
...