在實際測試中會經常見到登錄操作需要驗證碼驗證登錄
常見驗證有以下幾種:
- 驗證碼登錄
- 圖片識別
- 圖片滑塊識別驗證
4.簡單驗證碼計算
針對上面的登錄驗證解決辦法有以下幾種:
1.讓開發去掉驗證碼(注釋掉驗證碼相關代碼)
2.設置萬能驗證碼 (只適用於第一種驗證碼)
3 .驗證碼識別技術 (主要針對圖片識別)
python的pytesseract庫用於驗證碼識別
4.使用cookie記錄登錄,自動化腳本繞過驗證環節
下面主要介紹使用cookie登錄,以博客園為列,其他解決辦法后面有時間再進行補充:
博客園登錄驗證為上圖第三種:圖片滑塊識別驗證
博客園登錄頁面:
第一步:獲取cookie
首先編寫登錄腳本如下:
##登錄時記得選擇記住密碼
1 from selenium import webdriver 2 from time import sleep 3 4 Dirver = webdriver.Chrome() 5 Dirver.maximize_window() 6 Dirver.get("https://account.cnblogs.com/signin") 7 Dirver.implicitly_wait(10) 8 Dirver.find_element_by_id('LoginName').send_keys('username') 9 Dirver.find_element_by_id('Password').send_keys('password') 10 sleep(60) 11 12 #代碼運行到此處時,手動點擊登錄按鈕並進行圖片滑塊驗證,完成后,以下代碼會獲取登錄成功后的頁面cookie 13 14 cookies = Dirver.get_cookies() 15 print(cookies) 16 Dirver.quit()
第二步:根據獲取的cookie進行登錄
1 from selenium import webdriver 2 from time import sleep 3 4 5 Dirver = webdriver.Chrome() 6 Dirver.maximize_window() 7 Dirver.get("https://home.cnblogs.com/") 8 Dirver.implicitly_wait(10) 9 Dirver.add_cookie({'name':' ','value':''}) #輸入第一步得到的值 10 Dirver.add_cookie({'name':'','value':''}) 11 sleep(10) 12 Dirver.get("https://home.cnblogs.com/") 13 username = Dirver.find_element_by_css_selector('#header_user_right a:nth-child(2) ').text #獲取用戶名 14 print(username) 15 welcome = Dirver.find_element_by_id('header_user_left').text 16 print(welcome) #獲取歡迎字樣 17 sleep(3) 18 19 Dirver.quit()
登陸成功后的頁面如下:
關於自動化測試中的驗證碼登錄的其他解決辦法后續將一一補充