亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > jmeter使用Beanshell處理驗證碼

jmeter使用Beanshell處理驗證碼

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-06-02 19:06:00 1654167960

  在接口測試、自動化測試工作中,你一定會遇到驗證碼處理的問題,很多初入測試、甚至測試老鳥的處理方式都比較粗暴,要么找開發(fā)設置為萬能驗證碼或者直接測試環(huán)境取消驗證碼,說實話這種方式也非常實用,畢竟驗證碼不是我們項目核心,手工測試一下就可以了,何必自動化實現呢?

  今天給大家介紹一種Jmeter接口測試時對驗證碼自動識別的方式,先說在前頭,該方式對于背景干擾的圖片識別率還是有點低,但是對于純色底紋的識別率基本100%,請擇情使用。

  主要思路步驟如下:

  1、通過接口獲取驗證碼

  2、驗證碼處理腳本

  3、jmeter中配置驗證碼處理腳本

  4、識別驗證碼

  一、驗證碼接口案例介紹

  在我們項目的登錄模塊中就帶有驗證碼,我們就以這個接口為例講解。

圖片100

  我們可以在jmeter中實現這個接口,步驟如下。

  1、啟動jemter

  2、創(chuàng)建線程組->http采樣器、debug采樣器,http采樣器設置如下

圖片101

  3、添加監(jiān)聽器->HTTP采樣器->保存結果到文件,配置如下,幾個選項都不勾選,默認文件名為1.png

圖片102

  4、添加監(jiān)聽器->查看結果樹,保存、運行腳本。

圖片103

  二、驗證碼處理代碼

  現在驗證碼文件已經保存在本地了,需要將其讀取為base64加密格式,然后才能進行后續(xù)的驗證碼識別。

  下面我們將使用java,編寫圖片文件處理的文件,實現將base64加密的數據轉文圖片文件,也可以將圖片文件處理為base64加密文件,并將其導出為jar包備用。

  1、eclipse創(chuàng)建java工程

  2、導入sun.misc.BASE64Decoder.jar包,需自行下載

  創(chuàng)建文件夾lib

  復制sun.misc.BASE64Decoder.jar包到lib文件夾下

  選擇sun.misc.BASE64Decoder.jar,右鍵build path->add build path

  3、創(chuàng)建包、java文件,目錄結構如下

圖片114

  4、java文件ToImage內容如下,如果文件名或者類名不同,需要調試代碼,注意事項。

  聲明類一定為public,否則jmeter調用會出現找不到類的問題

  main方法為調試代碼,導出包之前可以注釋掉

  package com.qf;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.io.InputStream;

  import java.io.OutputStream;

  import Decoder.BASE64Decoder;

  import Decoder.BASE64Encoder;

  public class ToImage {

  public static void main(String[] args){

  // String base64Str = "iVBORw0KGgoAAAANSUhEUgAAAKAAAAA8CAIAAABuCSZCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAOq0lEQ·········

  // boolean b=false;

  // try {

  // b = GenerateImage(base64Str, "D:/gg.jpg");

  // } catch (IOException e) {

  // // TODO Auto-generated catch block

  // e.printStackTrace();

  // }

  // System.out.println(b);

  String aa = GetImageStr("E:/3-Learning/Deep-Learning-master/imageVerydow/1.png");

  System.out.println(aa);

  }

  /**

  * 圖片轉化成base64字符串

  * @param imgPath

  * @return

  */

  public static String GetImageStr(String imgPath) {// 將圖片文件轉化為字節(jié)數組字符串,并對其進行Base64編碼處理

  String imgFile = imgPath;// 待處理的圖片

  InputStream in = null;

  byte[] data = null;

  String encode = null; // 返回Base64編碼過的字節(jié)數組字符串

  // 對字節(jié)數組Base64編碼

  BASE64Encoder encoder = new BASE64Encoder();

  try {

  // 讀取圖片字節(jié)數組

  in = new FileInputStream(imgFile);

  data = new byte[in.available()];

  in.read(data);

  encode = encoder.encode(data);

  //加密代碼后的字符串會自動化換行,通過該句取消掉換行

  encode = encode.replaceAll("\r\n", "");

  } catch (IOException e) {

  e.printStackTrace();

  } finally {

  try {

  in.close();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  return encode;

  }

  /**

  * base64字符串轉化成圖片

  *

  * @param imgData

  *            圖片編碼

  * @param imgFilePath,存放到本地路徑

  * @return

  * @throws IOException

  */

  @SuppressWarnings("finally")

  public static boolean GenerateImage(String imgData, String imgFilePath) throws IOException { // 對字節(jié)數組字符串進行Base64解碼并生成圖片

  if (imgData == null) // 圖像數據為空

  return false;

  BASE64Decoder decoder = new BASE64Decoder();

  OutputStream out = null;

  try {

  out = new FileOutputStream(imgFilePath);

  // Base64解碼

  byte[] b = decoder.decodeBuffer(imgData);

  for (int i = 0; i < b.length; ++i) {

  if (b[i] < 0) {// 調整異常數據

  b[i] += 256;

  }

  }

  out.write(b);

  } catch (FileNotFoundException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } finally {

  out.flush();

  out.close();

  return true;

  }

  }

  }

  5、導出jar包

  代碼調試通過后,導出該工程jar包備用(jmeter中Beanshell處理器可以導入jar包并使用其功能)。

  選中工程名->export->jar file->配置導出的jar選項,如圖設置,點擊Finish完成導出。

  至此,我們就擁有了一個ToImage.jar的文件,該文件提供兩個方法:

  GetImageStr:圖片轉化成base64字符串

  GenerateImage:base64字符串轉化成圖片

圖片104

  三、Jmeter實現驗證碼識別

  實現驗證碼識別,需要借助OCR(Optical Character Recognition,光學字符識別)插件,我們可以通過gitee下載一個,當然可以自己實現識別代碼。

  我們采用gitee上的開源的jmeter-captcha識別碼插件,可以下載其jar包直接使用,也可以下載源碼包二次開發(fā)。作者建議二次開發(fā),因為不同驗證碼的底紋干擾不同,處理方式也不太一樣,如果是打包的jar包,識別率就會收到影響。

  本文采用jar包直接演示,如需要可以直接找作者索要,源碼見gitee。

  https://gitee.com/changpei12315/jmeter-captcha

  1、下載jmeter-captcha,并配置到到{JMEMTER_HOME}/lib/ext/下

  https://gitee.com/hyj-jmeter/jmeter-captcha/releases

圖片105

  2、下載tessdata語言包,為空默認在{JMEMTER_HOME}/lib/tessdata下

  https://gitee.com/changpei12315/tessdata_fast

  將下載的tessdata_fast中的文件復制到tessdata中即可。

圖片106

  3、jmeter中測試計劃設置

  添加ToImage.jar包

  添加sun.misc.BASE64Decoder.jar包

  定義一個變量code,用于中轉存儲驗證碼數據

圖片107

  4、jmeter采樣器后置處理設置

  線程組->后置處理器->Beanshell后置處理器,并設置如下:

  import com.qf.ToImage;

  //先將圖像文件讀入到此處,轉為base64

  String aaa = ToImage.GetImageStr("E:/1.png");

  System.out.println(aaa);

  //使用put方法將加密的圖片數據輸出到code變量(測試計劃中定義)中

  vars.put("code",aaa);

圖片108

  線程組->后置處理器->驗證碼識別插件(完成前兩步才有),配置如下:

圖片109

 

  5、運行查看結果

  其實本案例中的驗證碼的識別率很低,需要調整ocr對圖片的灰度、干擾線等代碼優(yōu)化。

圖片110

  四、其他簡單驗證碼的識別

  如果驗證碼圖片比較簡單,沒有復雜底紋和干擾的話,識別率還是挺高的。

  1、白底純數字的驗證碼識別

  驗證碼識別插件設置語言為:eng

  Beanshell后置處理器設置讀入文件為:E:/sz.png

圖片112

  3、白底純字母的驗證碼識別

  驗證碼識別插件設置語言為:eng

  Beanshell后置處理器設置讀入文件為:E:/zm.png

圖片113

  4、白底純漢字的驗證碼識別

  驗證碼識別插件設置語言為:chi_sim

  Beanshell后置處理器設置讀入文件為:E:/hz.png 

  五、總結

  后續(xù)持續(xù)更新一篇對干擾優(yōu)化的文章,可以替換掉現有的jmeter-captcha.jar包。

  以及一篇深度學習的文章,通過學習算法訓練學習,可以有效提升識別準確率。歡迎大家的持續(xù)關注和點贊。

  更多關于軟件測試培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
AV无码AV无码专区| 99精品久久久久中文字幕| 中文字日产幕码三区的做法步骤| 一区二区无码在线视频| AV无码动漫一区二区三区精品| 成人无码视频在线观看| 国产偷国产偷亚洲高清日韩| 久久久精品中文字幕乱码18| 欧美丰满熟妇性XXXX| 少妇无码AV无码专区在线观看| 亚洲AV无码成人精品| 一受多攻同做H嗯啊巨肉| CHINESE东北体育生自慰| 国产成人综合色在线观看网站| 精品久久久无码中文字幕一丶| 女生输了给对方玩一个月| 天堂√最新版中文在线天堂| 亚洲人成亚洲精品| 天堂资源とまりせっくす| 免费人成网站在线观看欧美 | 狠狠躁夜夜躁人人爽天天5| 久久久综合亚洲色一区二区三区| 全彩十八禁漫画无遮挡| 亚洲AV无码国产丝袜在线观看| 最新国产AⅤ精品无码| 国产精品99久久久久久人| 久久人人爽人人爽人人片AV高请| 日韩系列中文无码| 亚洲婷婷五月综合狠狠| 嗯好爽快点插我视频在线播放 | 又粗又硬又黄A级毛片| 成人性欧美丨区二区三区| 久久97久久97精品免视看秋霞 | 亚洲精品无码久久久| WWW亚洲精品自慰一区二区| 孩交精品XXXX视频视频| 热RE99久久精品国99热| 亚洲丁香婷婷久久一区二区| 宝宝把腿抬起来靠墙上C| 久久99国产精品尤物| 少妇性饥渴无码A区免费| 在线观看亚洲AV| 国产精品自在拍一区二区不卡 | 久久久国产一区二区三区| 试看120秒男女啪啪免费| 尤物娇妻被NP高H| 国产美女精品视频线免费播放软件| 免费专区SM美脚践踏调教视频| 无码人妻在线视频| WC女厕撒尿七Ⅴ偷拍| 久久国产精品香蕉成人APP| 色欲午夜无码久久久久久| 中国熟妇人妻XXXXX| 国产又爽又黄的激情精品视频| 青青草原综合久久大伊人精品| 亚洲精品无码国模| 国产成人A亚洲精V品无码| 免费女人18毛片A毛片视频 | 99在线精品视频在线观看| 精品国产精品国产偷麻豆| 天天澡天天揉揉AV无码| CHINESE东北嫖妓女HD| 久久精品一本到99热免费| 无码中文字幕加勒比高清| YW亚洲AV无码乱码在线观看| 久久青草亚洲AV无码麻豆| 性生生活大片又黄又| 成人国产欧美大片一区 | 久久本道综合久久伊人| 无码人妻av免费一区二区三区| А√天堂8在线官网| 久久影院九九被窝爽爽| 亚洲AV日韩综合一区久热| 国产AⅤ无码专区亚洲AV麻豆| 欧美人与动人物XXXX9296| 野花香高清视频在线观看免费| 国产精品无码不卡一区二区三区 | 差差差很疼免费软件APP下载 | 无码AV专区丝袜专区| 成人AV片无码免费网站| 女人被弄高潮视频免费| 亚洲最大AV网站在线观看| 好吊视频一区二区三区| 婷婷久久综合九色综合97| 插花弄玉小说荔枝很甜作者卿凌| 男同GAY片自慰AV网站| 亚洲综合蜜臀AV| 精品人妻一区二区三区| 亚洲2022国产成人精品无码区| 丰满人妻熟妇乱又伦精品视频三| 欧美最猛黑人XXXⅩ猛男爽| 中文字幕无码日韩AV| 久久永久免费人妻精品直播| 亚洲欧洲日产国码中文字幕| 果冻传媒一区二区天美传媒| 午夜无码免费福利视频网址| 国产成人无码AV一区二区| 色欲人妻AAAAAAA无码| 粗大黑人巨茎大战欧美成人| 人妻少妇精品视频专区 | 人妻美妇疯狂迎合系列视频| AK福利利电影在线看视频| 男同桌上课用手指进去了好爽| 重口老太大和小伙乱| 麻豆乱码国产一区二区三区| 又色又爽又黄18禁美女裸身无遮| 久久精品国产亚洲AVAPP下载| 亚洲精品无码不卡在线播HE| 精产国品一区别视频| 亚洲国产精品久久久久秋霞小 | 果冻传媒AⅤ毛片无码蜜桃| 亚欧乱色熟女一区二区三区| 国产亚洲欧洲综合5388| 亚洲AV日韩精品一区二区三区| 国产一区二区三区好的精华液| 亚洲AV成人片色在线观看蜜桃| 国产午夜鲁丝片AV无码免费| 性一交一乱一伦一在线小视频| 国产熟女一区二区三区四区五区| 午夜性色一区二区三区不卡视频| 国产乱XXXX搡XXXXX搡| 亚洲 欧美 叧类人妖| 黑人欧美一区二区三区4p| 亚洲欧美精品水蜜桃| 久久青青草原精品国产| 中国少妇初尝黑人巨高清| 欧美XXXX色视频在线观看| YOUJIZZ中国熟女| 日韩少妇人妻夜夜爽| 国产成人精品一区二三区在线观看 | 狠色狠色狠狠色综合久久| 亚洲日本VA午夜在线影院| 老汉粗大不带套怀孕| 98久9在线 | 免费| 人与动人物XXXX毛片在线播放| 丰满的少妇XXXXX人妻| 无码少妇精品一区二区免费动态| 国产又大又硬又粗| 亚洲色18禁成人网站WWW| 老狼一区忘忧草欢迎您大豆男男 | 亚洲中文字幕精品久久| 乱人伦中文字幕成人网站在线 | 伊人久久大香线蕉AV不卡| 男人一边吃奶一边弄下边好爽| 暗交小拗女一区二区三| 特级BBBBBBBBB视频| 好男人资源在线WWW免费| 亚洲熟妇无码八AV在线播放| 免费网站看V片在线18禁| 被老外做的下身都肿了| 无码国产精成人午夜视频一区二区| 国产亚AV手机在线观看| 一本到在线高清视频| 欧美亚洲一区二区三区| 国产成人欧美精品视频APP| 亚洲丰满性熟妇ⅩXXOOO| 麻豆精品国产综合久久| 宝贝腿开大一点你真湿H| 无码精品人妻一区二区三区aV| 精品人妻中文AV一区二区三区| √天堂中文最新版在线中文| 日本熟妇色XXXXX日本妇奷| 国产无套内射普通话对白| 伊人激情AV一区二区三区| 人妻无码一区二区三区蜜桃| 国产精品美女乱子伦高| 亚洲熟妇AⅤ无码一区二区| 欧美日韩精品一区二区三区不卡| 国产成人AV在线综合| 亚洲日本中文字幕乱码在线电影 | 亚洲AV一二三区成人影片| 美女把尿口扒开让男人桶| 成人亚洲性情网站WWW在线观看| 亚洲AV日韩综合一区久热| 蜜桃国产精品乱码一区二区三区 | 久久久久久精品免费无码无| Z〇Z〇ZO女人另类Z〇Z○| 亚洲 精品 综合 精品 自拍 | 太紧了夹得我的巴好爽欧美| 精品亚洲国产成人| 爱丫爱丫影院在线观看视频| 亚洲AV成人片无码| 欧美极品少妇XXXX亚洲精品| 国产精品亚洲片在线| 中文字幕JUL975老公不在| 同学故意把我的校服当抹布用作文| 久久国产精品波多野结衣AV| 被添出水全过程免费视频| 亚洲国产成人久久综合一区77| 欧洲肉欲K8播放毛片| 国精产品一线二线三线区别| AV成人片无码夜色AV大胸| 亚洲AⅤ久久久噜噜噜噜| 女人扒开屁股桶爽6O分钟| 国产精品亚洲第一区焦香味| √天堂资源在线中文8在线最新版 √天堂资源地址在线官网 | 97久久人人超碰超碰窝窝| 小受呻吟高潮GV在线观看| 欧美高清熟妇啪啪内射不卡自拍| 国产麻豆VIDEOXXXX实拍|