selenium中BasicAuth認證彈框處理
一、什麼是BasicAuth
網友見面:
例如王二狗和牛翠花兩個人在網上都互動半年瞭還沒有見面,於是二狗向翠花發出瞭誠摯的邀請:翠花,五一來天津玩吧,我請你吃麻辣燙!本來二狗想先視頻一下到時候好認人,但翠花說那樣就沒有驚喜感瞭。於是兩人就采取瞭最原始的認證方式:對暗號,到時候翠花喊:天王蓋地虎。二狗就喊:翠花好漂亮。
沒錯,這種方式就是HTTP基本認證。
映射到互聯網為:
1、客戶端:服務器,請把logo.jpg圖片返回給我
GET /logo.jpg HTTP/1.1
2、服務器:客戶端你好,這個資源在安全區Authorization裡,是受限資源,需要基本認證,請帶上你的用戶名和密碼再來
HTTP/1.1 401 Authorization Required www-Authenticate: Basic realm= "Authorization"
服務器會返回401,告知客戶端這個資源需要使用基本認證的方式訪問。
我們可以看到在
www-Authenticate
這個Header裡面 有兩個值,
Basic:說明需要基本認證,
realm:說明客戶端需要輸入這個安全區的用戶名和密碼,而不是其他區的。
3、客戶端:服務器,我已經按照你的要求,攜帶瞭相應的用戶名和密碼信息瞭,你看一下。 如果客戶端是瀏覽器,那麼此時就會彈出一個彈窗,讓用戶輸入用戶名和密碼。
Basic 內容為: 用戶名:密碼 的base64形式 。
例如我的用戶名為Shusheng007,密碼為ss007。那麼我的Basic的內容為 Shusheng007:ss007 對應的base64 編碼內容U2h1c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示
GET /logo.jpg HTTP/1.1 Authorization: Basic U2h1c2hlbmcwMDcldUZGMUFzczAwNw==
4、服務器:客戶端你好,我已經校驗瞭你的用戶名和密碼,是正確的,這是你要的資源。
HTTP/1.1 200 OK Content-type: image/jpg ...
至此這個HTTP事務就結束瞭,非常簡單的一個認證機制。
二、selenium處理思路
因為非常像彈出框,首先我們想到的思路是alert處理模塊。
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://ip:port/admin.php/index/index") driver.switch_to.alert.send_keys("hello") input("...") driver.quit()
但是代碼會報錯,提示找不到alert警告框
接下來考慮是不是UI自動化的詬病,要加延遲,安排!
from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://ip:port/admin.php/index/index") time.sleep(5) driver.switch_to.alert.send_keys("hello") input("...") driver.quit()
問題依舊~
接下來思考,當前這個彈框出現後是不能夠元素定位的,確定不是HTML,是瀏覽器的彈框。
接下來就想入非非瞭,Keys?pyautogui?最後想到HTTP協議是可以攜帶賬號和密碼的,但是通常不會這麼做。
格式為:http://username:password@host:port/path/query parameter
代碼試驗如下:
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://username:password@ip:port/admin.php") input("...") driver.quit()
的確跳過授權框,進入到網頁登錄頁面。
到此這篇關於selenium中BasicAuth認證彈框處理的文章就介紹到這瞭,更多相關selenium BasicAuth認證彈框內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python selenium的這三種等待方式一定要會!
- 詳解Python 使用 selenium 進行自動化測試或者協助日常工作
- Python腳本Selenium及頁面Web元素定位詳解
- Python語言中的Selenium環境搭建
- selenium自動化測試簡單準備