保存验证码的方法_selenium自动化测试:6.验证码处理
0.前言
如果可以的話,請先關注(專欄和賬號),然后點贊和收藏,最后學習和進步。你的支持是我繼續寫下去的最大動力,個人定當傾囊而送,不負眾望。謝謝!!!
1.前提
基于win10專業版64位系統+64位jdk1.8+64位python3.6.5+社區版pycharm2018.1.3+unittest+selenium3.141.0。
2.驗證碼處理
目前大家在訪問很多網站的時候,尤其登錄頁面可能都會有要求輸入驗證碼的校驗,其目的就是為了識別是人還是機器在操作,從而增強系統的安全性。
驗證碼的種類有很多,比如:純數字驗證碼,純字母驗證碼,數字+字母驗證碼,漢字驗證碼,圖片驗證碼,拼圖驗證碼等等。無論哪種,我們在做自動化測試時,如何解決驗證碼的校驗問題呢?
1)屏蔽驗證碼
直接找負責對應模塊的開發或者讓你的領導找對方,要求其在內部測試環境先臨時屏蔽驗證碼(即去掉驗證碼的校驗),不用輸入驗證碼即可登錄。注意再正式上線的時候一定要記得恢復該功能,比如在BUG庫里以一個問題單來跟蹤,否則會有安全風險。
2)萬能驗證碼
這種方式與上面的方式類似,還是找開發人員來處理,加個判斷差不多兩行代碼就搞定了,比如輸入1111可以始終校驗通過。相對第一種處理方式能好一些,因為有驗證碼校驗,輸入正確的驗證碼或者輸入1111的驗證碼都可以校驗通過,安全性稍微高一些,但在上線的時候也需要去掉萬能驗證碼哦。
3)OCR圖像識別
比較麻煩的一種方式,需要額外安裝一些工具,用代碼來識別驗證碼圖片中的正確字符,然后輸入驗證碼輸入框完成輸入校驗。存在一定的誤差和效率的問題,如果是自己公司內部的產品,做自動化測試時不建議使用此種方式,有那個研究的時間多去完善下別的模塊的測試腳本。如有興趣可參考下方我的另外一篇文章(當前僅支持簡單的圖片文字識別):
海闊and天空:OCR圖像識別:python+pytesseract+Tesseract-OCR?zhuanlan.zhihu.com4)添加cookie
假設一個登陸界面,有用戶名、密碼和驗證碼三個輸入框和一個登陸按鈕,webdriver打開頁面時不做任何登陸輸入,而是直接將登陸的用戶名和密碼信息直接用代碼添加到瀏覽器對象的cookie中,無序輸入驗證碼,然后刷新下頁面即可自動完成登錄。原理是什么呢?就是比如你正常登錄一個網站,然后直接關閉瀏覽器,再次打開瀏覽器你會發現訪問同一頁面會自動登錄了,并不需要你再次登錄。為什么呢?因為用到了cookie或者session緩存機制,有效期內,無需用戶再次登錄。
參考代碼:
from selenium import webdriver dr = webdriver.Chrome() dr.get("http://qzx:8080/Test1.4/") dr.add_cookie({'name':'username','value':'admin'})#添加用戶名cookie dr.add_cookie({'name':'password','value':'admin'})#添加密碼cookie # dr.get("http://qzx:8080/Test1.4/")#再次打開同一頁面會自動登錄 dr.refresh()#刷新頁面會自動登錄注:該方法不是萬能的,僅適用于使用cookie將用戶登錄信息保存在本地的一些系統,使用session將用戶登錄信息保存在遠端服務器上的系統時不行的哦。
5)打碼平臺
將驗證碼圖片發給第三方的平臺,來幫你識別。不常用,略。
6)其它方式
總結:關于自動化測試時的驗證碼處理方式其實有很多,建議大家使用上面第二種(即萬能驗證碼)的方式,有限保證安全性的同時有確保了驗證功能的完整性,比如你做自動化測試使用完成驗證碼實現腳本,別的手工測試人員繼續使用頁面上顯示的驗證碼,正確手工輸入測試即可,互不影響。
總結
以上是生活随笔為你收集整理的保存验证码的方法_selenium自动化测试:6.验证码处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: element手机验证格式_Larave
- 下一篇: php mvc urlencode,PH