自動化測試如何解決驗證碼問題


驗證碼作用:
不少網站在用戶登錄、用戶提交信息等登錄和輸入的頁面上使用了驗證碼技術。驗證碼技術可以有效防止惡意用戶對網站的濫用,使得網站可以有效避免用戶信息失竊、保證網站穩定安全性。
但是驗證碼給自動化測試帶來一些不便,使腳本無法正常運行覆蓋功能模塊。

如何解決:

1.去掉驗證碼
這是最簡單的方法,對於開發人員來說,只是把驗證碼的相關代碼注釋掉即可,如果是在測試環境,這樣做可省去了測試人員不少麻煩,如果自動化腳本是要在正式環境跑,這樣就給系統帶來了一定的風險。

2.設置萬能碼
去掉驗證碼的主要是安全問題,為了應對在線系統的安全性威脅,可以在修改程序時不取消驗證碼,而是程序中留一個“后門”---設置一個“萬能驗證碼”,只要用戶輸入這個“萬能驗證碼”,程序就認為驗證通過,否則按照原先的驗證方式進行驗證。

3.驗證碼識別技術(OCR)
例如可以通過Python-tesseract 來識別圖片驗證碼,Python-tesseract是光學字符識別Tesseract OCR引擎的Python封裝類。能夠讀取任何常規的圖片文件(JPG, GIF ,PNG , TIFF等)。不過,目前市面上的驗證碼形式繁多,目前任何一種驗證碼識別技術,識別率都不是100% 。

4.記錄cookie

(適用於UI自動化測試,且目前在大部應用的用戶名密碼不記錄在cookie 或 進行加密處理。)
通過向瀏覽器中添加cookie 可以繞過登錄的驗證碼。

from selenium import webdriver
from time import sleep

driver=webdriver.Chrome()
#訪問XXX網站
driver.get("XXX")

#手動添加cookie;將用戶名密碼寫入瀏覽器cookie
driver.add_cookie({'name':'Login_username','value':'username(根據實際獲取值填寫)'})
driver.add_cookie({'name':'Login_password','value':'password'})

sleep(2)
#刷新再次訪問XXX網站將會自動登錄
driver.refresh()
sleep(3)
driver.quit()

總結:

    最簡單安全,行之有效的方式就是設置萬能碼,開發溝通一下一般都是可以的。如果樂於悶頭苦干自力更生的話也可研究驗證碼識別技術。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM