第二篇:LR使用OCR识别验证码实现自动登录

学习了云大的验证码识别方法后我就开始研究如何实现自动登录的功能,经过研究发现LR在录制的时候是会存储结果文件的,默认存在脚本目录的result1中,其中Iteration1存储的是页面缓存文件,仔细检查了这个目录发现验证码文件就在这个目录中文件名为*ValidateCode.UNK , 于是便设想了一种识别验证码的方式:
1 lr 访问登录页面,在./result1/Iteration1/中生成*ValidateCode.UNK 文件即为验证码
2 lr 调用外部命令执行tesseract.exe识别验证码,将结果保存到txt文件中
3 lr 读取txt文件获取验证码,保存为参数
4 得到验证码参数后就可以实现登录功能了

理清了思路,开始录制脚本,然后进行修改,最终实现了登录操作,lr脚本如下(脚本中隐去了网址):

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);


以上脚本实现了在有验证码情况下的自动登录,注意请将ValidateCode.py和tesseract.exe都拷贝到脚本目录!  

记录下来供自己学习研究,欢迎各位拍砖!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25437692/viewspace-756613/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25437692/viewspace-756613/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值