花了兩天時間才完整的完成識別驗證碼的登入操作,在網上看到很多關於驗證碼識別的方法,但是我用的qtp版本比較高階,所以還是要自己花心思研究。po上我的識別驗證碼的詳細歷程:
一、讀取瀏覽器中的驗證碼
1.開啟瀏覽器登入介面2.啟動qtp,不勾選web
然後選擇modify,output types設定為environment,name 可以改寫為「getchar」。停止錄製
得到的**為:
window("windows internet explorer").winobject("internet explorer_server").output checkpoint("internet explorer_server")4.在錄製完後的**上加一行:
msgbox environment.value ("getchar")5.在qtp上點選run
這樣它就會彈出驗證碼的訊息框
二、識別word中的數字。在qtp中回放錄製的驗證碼,將驗證碼輸出來:1,開啟qtp,不選擇web。錄製時利用text area output value在word中選中一段,內容為數字,獲取到裡的數字,儲存為環境變數getchar3.
2.新建乙個test,呼叫剛錄製的那個action 。然後再錄製在word中輸入一段文字。3.將文字改為環境變數getchar3的值,這樣在word中就會輸出驗證碼的值了。第二個test的**如下:
runaction "copy of action1", oneiterationmsgbox environment.value("getchar3") #將環境變數的值用messagebox彈出來
myword=environment.value("getchar3") #將環境變數的值複製給乙個變數
window("microsoft word").winobject("microsoft word 文件").type myword #這句是錄製得到的。本來是type "1234",將"1234"改為type。
三、完整的登入oa系統。以下是action name為oa_login_code的**內容。先錄製不帶web的識別驗證碼的checkcode action,再勾選web addin 錄製登入oa系統的action。錄製時oa的登入介面是開啟的狀態。
在checkcode action中可以在file——setting--environment--internal value,看到getchar。但在呼叫它的action中不能看到這個環境變數值。直接使用這個環境變數即可。runaction "copy of checkcode", oneiteration
mywebelement=environment.value ("getchar")
browser("流程管道,知識活水").page("流程管道,知識活水").webedit("authcode").set mywebelement
browser("流程管道,知識活水").page("流程管道,知識活水").webedit("j_username").set "078057"
browser("流程管道,知識活水").page("流程管道,知識活水").webedit("j password")browser("流程管道,知識活水").page("流程管道,知識活水").webedit("j_password").setsecure "541303024777c70d"
browser("流程管道,知識活水").page("流程管道,知識活水").image("submit").click 2,12
其中checkcode action的**:
window("windows internet explorer").winobject("internet explorer_server").output checkpoint("internet explorer_server")
執行完整action後的結果:
錯誤記錄一:上面的**是以windows的方式錄製了截圖驗證碼讀取其中的文字值,將其存為環境變數getchar。我將值存為global data ,回放的時候這個值不會變,存為環境變數則每次都能獲取到正確的驗證碼。
錯誤記錄二:我單獨執行呼叫程式時,在qtp自己的result中可以看到驗證碼獲取成功。但是先使用者名稱、再密碼,再驗證碼,獲取的驗證碼的值就為空。於是將呼叫識別驗證碼的語句放在第一句,先輸入驗證碼(上面的**是執行成功的**)。這樣就可以成功登入了。可能是因為截圖識別框要靠滑鼠和座標抓取。
通過識別驗證碼的程式學習到:
1.遮蔽多行,單獨驗證某行看是否通過。然後再執行多步2.qtp的驗證碼識別是通過抓取中的文字進行識別。現在只能識別英文。如果錄製時選擇中文(在tools-options--gui testing-text recognition中設定),也識別不到。
qtp11.5 ocr設定:在tools-options--gui testing-text recognition中設定。我在win7上裝的只有ocr這一種方式。
3.錄製時,有時候錄製不生成**,有時候回放不成功,要重新開啟ie瀏覽器。
驗證碼 簡單驗證碼識別
這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進ps,50 透明度,長這樣 只有數字為內容 每張圖的數字都在固定位置 沒有太大的干擾因素 數字字型,形態完...
驗證碼識別
驗證碼識別過程好比人大腦的乙個識別過程 首先,我們的眼睛接收,並將這張的資訊輸送給大腦 然後,我們的大腦接收到這個資訊以後,對這個資訊作出處理 最後,將中的有效資訊提取出來再將其和大腦中儲存的資訊進行對應對比,確定對比結果。模擬驗證碼識別,大腦接受的處理過程就相當於電腦對的預處理,大腦對進行對比和確...
驗證碼識別
import tensorflow as tf 定義乙個初始化權重的函式 def weight variables shape w tf.variable tf.random normal shape shape,mean 0.0,stddev 1.0 return w 定義乙個初始化偏置的函式 d...