驗證碼作用:
不少網站在用戶登錄、用戶提交信息等登錄和輸入的頁面上使用了驗證碼技術。驗證碼技術可以有效防止惡意用戶對網站的濫用,使得網站可以有效避免用戶信息失竊、保證網站穩定安全性。
但是驗證碼給自動化測試帶來一些不便,使腳本無法正常運行覆蓋功能模塊。
如何解決:
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()
總結:
最簡單安全,行之有效的方式就是設置萬能碼,開發溝通一下一般都是可以的。如果樂於悶頭苦干自力更生的話也可研究驗證碼識別技術。