AutoIT自動化之OCR解決驗證碼識別

2021-06-09 12:44:28 字數 1878 閱讀 6476

web專案的自動化測試中,經常需要處理驗證碼識別的問題。主流上有兩種方法,第一種是使用萬能驗證碼或遮蔽驗證碼,第二種就是人工輸入驗證碼。其實還有一種辦法,只是效果並不太好,這種方法就是使用ocr識別。網路上有很多基於ocr識別技術的工具、引擎以及一些web服務,它們對於識別一些簡單的驗證碼是有一定的效果的,但是對於比較複雜的驗證碼(比如增加了一些模糊功能或者多種語言文字組合)識別效果並不太理想。此處將使用一款開源的ocr引擎(tesseract)來解決autoit自動化測試中驗證碼識別的問題。

tesseract原本由惠普開發,在一段時間內因為一些原因沒有更新,google於2023年重啟了這個專案,目前已經發布到了3.01版本。

檢視「c:\」下是否生成了乙個名為「1.txt」的文字,並檢視文字中的識別結果。

由此,可以看出中的驗證碼已經被tesseract識別出來。

使用tesseract可以從中識別出驗證碼來,那麼自動化測試中處理驗證碼的第一步就是從應用中把驗證碼摳出來。下面的這段**即實現了這樣的處理。

while not checklinkexistbytext($oie,"退出》")

;msgbox(1,"num","第"&$i&"次")

;msgbox(1,"識別為",$checkcode)

fileclose($file)

$inputcheck.value = $checkcode

local $inputname = _iegetobjbyname($oie,"txtusername")

local $inputpwd = _iegetobjbyname($oie,"txtpassword")

local $loginbtn = _iegetobjbyname($oie,"btnlogin")

$inputname.value=$tester

$inputpwd.value=$testerpwd

$loginbtn.click

_ieloadwait($oie)

processclose("cmd.exe")

$i=$i+1

wend

這段**的思想就是,當識別出來的驗證碼輸入後登入不成功,就重新獲取驗證碼再識別再次嘗試,直到識別出正確的驗證碼。

注意到這段**:

即使用cmd命令來執行tesseract的識別。

tesseract還具有很強大的訓練功能,可以利用訓練功能增強tesseract的識別能力。

AutoIt自動化程式設計 1

1 執行程式 run命令或者函式用來執行外部可執行檔案 au3 run 檔名 工作目錄 標誌 example au3 run notepad.exe 上面的示例中都沒有給出程式 notepad.exe 的路徑,為什麼仍能執行?這是因為它們都會自動在指令碼所在目錄下搜尋目標檔案,如有則執行,否則就到系...

AutoIt自動化程式設計 2

注意 視窗標題和視窗文字引數總是對大小寫敏感的。1 等待視窗系列命令 函式 ahk和au3都提供了用法類似的一組視窗等待命令 函式 winwait winwaitactive winwaitclose。它們分別用於等待視窗出現 等待視窗被啟用 等待視窗被關閉。由於這些命令 函式的引數類似,現僅以wi...

AutoIt 軟體自動化操作

autoit 目前最新是v3版本,這是乙個使用類似basic指令碼語言的免費軟體,它設計用於windows gui 圖形使用者介面 中進行自動化操作。它利用模擬鍵盤按鍵,滑鼠移動和視窗 控制項的組合來實現自動化任務。而這是其它語言不可能做到或無可靠方法實現的 例如vbscript和sendkeys ...