欧美日韩调教_欧美精品啪啪_欧美精品97_国产女主播一区二区_欧美精品播放_亚洲精品乱码久久久久久蜜桃91_中文欧美日韩_夜夜爽www精品_国产亚洲亚洲_国产欧美日韩亚洲

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

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

jmeter使用Beanshell處理驗證碼

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

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

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

  主要思路步驟如下:

  1、通過接口獲取驗證碼

  2、驗證碼處理腳本

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

  4、識別驗證碼

  一、驗證碼接口案例介紹

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

圖片100

  我們可以在jmeter中實現(xiàn)這個接口,步驟如下。

  1、啟動jemter

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

圖片101

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

圖片102

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

圖片103

  二、驗證碼處理代碼

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

  下面我們將使用java,編寫圖片文件處理的文件,實現(xiàn)將base64加密的數(shù)據(jù)轉(zhuǎn)文圖片文件,也可以將圖片文件處理為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文件,目錄結(jié)構(gòu)如下

圖片114

  4、java文件ToImage內(nèi)容如下,如果文件名或者類名不同,需要調(diào)試代碼,注意事項。

  聲明類一定為public,否則jmeter調(diào)用會出現(xiàn)找不到類的問題

  main方法為調(diào)試代碼,導出包之前可以注釋掉

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

  }

  /**

  * 圖片轉(zhuǎn)化成base64字符串

  * @param imgPath

  * @return

  */

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

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

  InputStream in = null;

  byte[] data = null;

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

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

  BASE64Encoder encoder = new BASE64Encoder();

  try {

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

  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字符串轉(zhuǎn)化成圖片

  *

  * @param imgData

  *            圖片編碼

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

  * @return

  * @throws IOException

  */

  @SuppressWarnings("finally")

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

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

  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) {// 調(diào)整異常數(shù)據(jù)

  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包

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

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

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

  GetImageStr:圖片轉(zhuǎn)化成base64字符串

  GenerateImage:base64字符串轉(zhuǎn)化成圖片

圖片104

  三、Jmeter實現(xiàn)驗證碼識別

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

  我們采用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中測試計劃設(shè)置

  添加ToImage.jar包

  添加sun.misc.BASE64Decoder.jar包

  定義一個變量code,用于中轉(zhuǎn)存儲驗證碼數(shù)據(jù)

圖片107

  4、jmeter采樣器后置處理設(shè)置

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

  import com.qf.ToImage;

  //先將圖像文件讀入到此處,轉(zhuǎn)為base64

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

  System.out.println(aaa);

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

  vars.put("code",aaa);

圖片108

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

圖片109

 

  5、運行查看結(jié)果

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

圖片110

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

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

  1、白底純數(shù)字的驗證碼識別

  驗證碼識別插件設(shè)置語言為:eng

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

圖片112

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

  驗證碼識別插件設(shè)置語言為:eng

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

圖片113

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

  驗證碼識別插件設(shè)置語言為:chi_sim

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

  五、總結(jié)

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

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

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

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
欧美日韩调教_欧美精品啪啪_欧美精品97_国产女主播一区二区_欧美精品播放_亚洲精品乱码久久久久久蜜桃91_中文欧美日韩_夜夜爽www精品_国产亚洲亚洲_国产欧美日韩亚洲
国产精品88888| 国产日韩精品视频一区| 久久网这里都是精品| 精品亚洲国产成人av制服丝袜 | 国产成人自拍高清视频在线免费播放| 在线免费亚洲电影| 日韩高清一区二区| 每日更新成人在线视频| 亚洲精品高清在线| 99这里有精品| 国产精品久久久久久久裸模 | 欧美福利在线| 国产三级精品三级| 欧美日韩亚洲一区| 国产日韩视频一区二区三区| 91亚洲精华国产精华精华液| 国产午夜精品久久| 欧美网站在线| 亚洲天堂久久久久久久| 日韩午夜免费| 亚洲精品国久久99热| 日韩一级免费| 一区二区三区丝袜| 国产精品区免费视频| 亚洲制服丝袜av| 久久精品二区| 蜜桃视频第一区免费观看| 色婷婷久久一区二区三区麻豆| 日韩制服丝袜av| 欧美视频一区二区三区四区 | 亚洲免费av高清| 亚洲每日在线| 亚洲综合丁香婷婷六月香| 久久精品五月婷婷| 麻豆视频一区二区| 91精品国产高清一区二区三区蜜臀 | 久久一区国产| 美美哒免费高清在线观看视频一区二区| 欧美影视一区二区三区| 国产精品一品二品| 久久这里只有精品视频网| 97久久精品人人做人人爽| 欧美国产精品劲爆| 国产精品短视频| 一本一本久久| 免费在线看成人av| 欧美一区二区三区在线观看| 成人av在线看| 中文字幕一区二区三区在线不卡| 亚洲视频二区| 免费亚洲电影在线| 日韩一区二区三区四区| 欧美成人一区二免费视频软件| 欧美日韩欧美一区二区| 成人一道本在线| 国产精品成人免费| 久久高清免费观看| 国产在线精品免费| xnxx国产精品| 在线看无码的免费网站| 三级久久三级久久| 91精品国产手机| 色综合色综合色综合色综合色综合| 中文字幕亚洲区| 久久国产精品一区二区三区四区| 极品美女销魂一区二区三区| 久久免费视频一区| 亚洲一区自拍偷拍| 69久久99精品久久久久婷婷 | 欧美激情综合色综合啪啪| 欧美婷婷久久| 日韩国产欧美在线视频| 日韩视频在线一区二区| 韩日精品视频| 久久精品国产亚洲高清剧情介绍| 久久久不卡网国产精品二区| 中文精品视频| 国产一区二区三区| 国产精品久久久久久久久免费桃花 | 国产一区二区三区蝌蚪| 国产亚洲精品bt天堂精选| 一区二区日本视频| 国产美女娇喘av呻吟久久| 国产精品家庭影院| 欧美在线观看一二区| 韩国一区二区三区美女美女秀| 久久精品国产网站| 综合色中文字幕| 欧美二区乱c少妇| 亚洲久久成人| 国产91在线|亚洲| 亚洲一区在线观看视频| 精品欧美一区二区三区精品久久| 在线亚洲成人| 国产69精品久久久久毛片| 亚洲人成亚洲人成在线观看图片| 91精品婷婷国产综合久久性色| 亚洲精品一区二| 国产黄人亚洲片| 亚洲一线二线三线久久久| 日韩欧美激情在线| 性娇小13――14欧美| 99re成人精品视频| 麻豆精品新av中文字幕| 国产精品电影院| 欧美剧情片在线观看| 亚洲人成高清| 粉嫩一区二区三区在线看| 亚洲成人精品一区| 国产日产精品1区| 欧美亚洲国产bt| 亚洲乱亚洲高清| 不卡电影免费在线播放一区| 天堂一区二区在线| 1区2区3区国产精品| 日韩精品一区二区在线| 久久亚洲美女| 亚洲高清网站| av亚洲精华国产精华| 久久机这里只有精品| 亚洲免费观看高清完整版在线 | 日本伊人色综合网| 国产精品日韩成人| 欧美成人精品二区三区99精品| 久久久久91| 亚洲激情不卡| 你懂的视频一区二区| 国产宾馆实践打屁股91| 水蜜桃久久夜色精品一区的特点| 国产精品美女www爽爽爽| 日韩手机在线导航| 欧美视频在线播放| 久久久久国内| 在线亚洲观看| 欧美特黄一级| www.久久久久久久久| 激情综合色丁香一区二区| 亚洲成人黄色小说| 亚洲乱码国产乱码精品精可以看| 精品免费视频.| 91.麻豆视频| 91久久精品日日躁夜夜躁欧美| 日韩一区二区久久| 一区在线视频| 欧美黄色aaaa| 成人黄色在线看| 国产精品自拍在线| 麻豆精品久久久| 天天影视网天天综合色在线播放 | 成人国产精品视频| 欧美专区日韩专区| 久久久久久久国产精品影院| 午夜精品久久久久久久99水蜜桃 | 91在线小视频| 韩国欧美一区二区| 美女免费视频一区| 天天射综合影视| 亚洲精品国产无天堂网2021 | 中文字幕亚洲区| 日本一区免费视频| 日韩精品一区二区三区老鸭窝| 在线成人av影院| 欧美乱妇15p| 欧美日韩国产精品成人| 欧美日韩在线综合| 欧美另类videos死尸| 欧美日韩在线播| 欧美日韩精品免费观看视频| 欧美色电影在线| 欧美三级韩国三级日本一级| 免费看亚洲片| 国产美女一区| 亚洲欧美日韩在线综合| 精品在线视频一区| 精品一区二区日韩| 韩国v欧美v日本v亚洲v| 国产在线国偷精品免费看| 国产一区二区中文字幕| 狠狠色丁香婷婷综合| 国产精品一级二级三级| 国产日韩欧美精品一区| 国产精品hd| 成人午夜视频网站| 波多野结衣欧美| 91亚洲永久精品| 国产一区二区三区无遮挡| 国产在线一区二区三区四区| 在线不卡亚洲| 国产精品久久久一区二区三区 | 福利91精品一区二区三区| 丁香另类激情小说| 91在线观看美女| 国产一区激情| 一区二区冒白浆视频| 久久中文精品| 欧美性感一类影片在线播放| 69堂成人精品免费视频| 久久久午夜精品| 亚洲色图欧美激情| 天天av天天翘天天综合网色鬼国产|