loadrunner使用system()函數調用Tesseract-OCR識別驗證碼遇

發表于:2013-04-24來源:Csdn作者:ZhuQue點擊數: 標簽:loadrunner
俗話說前人栽樹,后人乘涼,此話一點不假,結合云層的一遍文章:http://bbs.51testing.com/thread-533920-1-1.html,知道還有一個Tesseract-OCR可以用來識別圖片上的文字(驗證碼)。

  俗話說前人栽樹,后人乘涼,此話一點不假,結合云層的一遍文章:http://bbs.51testing.com/thread-533920-1-1.html,知道還有一個Tesseract-OCR可以用來識別圖片上的文字(驗證碼)。

  在code.google上下載了tesseract-ocr-setup-3.02.02.exe,即windows版本,下載安裝后安裝路徑自動加入到環境變量中,在cmd中可以手動測試一下:

  格式如下:tesseract.exe c:\test1.jpg c:\test -l

  //test1.jpg 是我提前保存在C盤中的驗證碼圖片,后面的test自動把test1.jpg中的驗證碼保存到test.txt中,后面-l是寫入到test.txt文件中的。

  按照云層提供的腳本,在system("c:\test.bat");無法運行,批處理腳本一閃就沒有啦。修改了system("c:\\test.bat");,并修改了批處理文件,加入了pause,提示錯誤。如下圖:

  loadrunner工具不識別tesseract.exe命令,但是手動在任何目錄中都是可以的,難道通過LR打開的終端窗口對windows中的path環境變量不識別??這個稍后嚴重。。

  看樣子只能修改這個批處理文件啦,把路徑指定到tesseract的安裝目錄中去才可以。

  然后運行成功,在自動生成的test.txt中可以看到獲取的驗證碼,也可以再LR的輸出中看到驗證碼:t4zbyh

  試了幾個驗證碼,大多沒有問題,

  其中下面的不能被識別(2013年3月8日補充:并不是所有HTTPS的不能被識別,中信銀行信用卡中心的驗證碼(純數字的)就可以被識別https://creditcard.ecitic.com/citiccard/cppnew/jsp/valicode.jsp?time=1362724476515,一些驗證碼不被識別的原因還待摸索,為什么https純數字的驗證碼就可以,難道其他的驗證碼是英文字符或者是加粗或者是圖片太大的原因嗎??):前面帶有HTTPS的,

  https://passport.csdn.net/ajax/verifyhandler.ashx?r_d=63178

  下面是loadrunner腳本:現在C盤中建立test.bat批處理

復制代碼

  Action()

  {

  int flen; //定義一個整型變量保存獲得文件的大小

  long filedes; //保存文件句柄

  char file[256]="c:\\test1.jpg"; //保存文件路徑及文件名

  char result[10]; //存放驗證碼的

  web_set_max_html_param_len("2000000");//設置頁面接收最大的字節數,該設置應大于下載文件的大小

  web_reg_save_param("pic",

  "LB=",

  "RB=",

  "Ord=1",

  "Search=Body",

  LAST);

  web_url("randpiccloud","URL=https://passport.csdn.net/ajax/verifyhandler.ashx?r_d=63178",LAST);

  //http://biz.ftuan.com/CheckImg.aspx

  //http://passport.ftuan.com/SecurityCode.aspx?refresh=Wed Mar 6 11:21:21 UTC+0800 2013

  //http://comment8.mydrivers.com/radompage.aspx?0.{rnum}

  //https://passport.gaopeng.com/captcha?w=98&h=36&r=0.4655476964544505

  //https://passport.csdn.net/ajax/verifyhandler.ashx?r_d=63178

  flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //獲得文件大小

  if(flen > 0)

  {

  if((filedes = fopen(file, "wb")) == NULL)

  {

  lr_output_message("oh cloud your Open File Failed!");

  return -1;

  }

  fwrite( lr_eval_string("{pic}"),flen,1,filedes );

  fclose( filedes );

  }

  system("c:\\test.bat");

  //調用C盤下的test.bat文件,改文件內容如下:

  /*

  c:

  cd C:\Program Files\Tesseract-OCR

  tesseract.exe c:\test1.jpg c:\test -l

  */

  //首先下載Tesseract工具并安裝,在批處理文件中必須cd到安裝目錄,否則LR調用時會提示“tesseract.exe不是內部命令”

  if((filedes = fopen("c:\\test.txt", "rt")) == NULL)

  {

  lr_output_message("oh,cloud your Open File Failed!");

  return -1;

  }

  fread( result,5,1,filedes); //此處控制驗證碼的長度

  fclose( filedes );

  lr_output_message("result: %s",result);

  lr_save_string(result,"txtCheck"); //傳驗證碼到txtCheck參數

  lr_output_message("txtCheck: %s",lr_eval_string("{txtCheck}")); //lr_eval_string("{txtCheck}")用在下面的登錄中

  return 0;

原文轉自:http://www.cnblogs.com/zhuque/archive/2013/03/06/2946565.html#2629177

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97