溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

selenium中BasicAuth認(rèn)證彈框問題怎么處理

發(fā)布時(shí)間:2022-07-11 13:43:06 來源:億速云 閱讀:246 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“selenium中BasicAuth認(rèn)證彈框問題怎么處理”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“selenium中BasicAuth認(rèn)證彈框問題怎么處理”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

一、什么是BasicAuth

網(wǎng)友見面:

例如王二狗和牛翠花兩個(gè)人在網(wǎng)上都互動(dòng)半年了還沒有見面,于是二狗向翠花發(fā)出了誠(chéng)摯的邀請(qǐng):翠花,五一來天津玩吧,我請(qǐng)你吃麻辣燙!本來二狗想先視頻一下到時(shí)候好認(rèn)人,但翠花說那樣就沒有驚喜感了。于是兩人就采取了最原始的認(rèn)證方式:對(duì)暗號(hào),到時(shí)候翠花喊:天王蓋地虎。二狗就喊:翠花好漂亮。

沒錯(cuò),這種方式就是HTTP基本認(rèn)證。

映射到互聯(lián)網(wǎng)為:

1、客戶端:服務(wù)器,請(qǐng)把logo.jpg圖片返回給我

GET /logo.jpg HTTP/1.1

2、服務(wù)器:客戶端你好,這個(gè)資源在安全區(qū)Authorization里,是受限資源,需要基本認(rèn)證,請(qǐng)帶上你的用戶名和密碼再來

HTTP/1.1 401 Authorization Required
www-Authenticate: Basic realm= "Authorization"

selenium中BasicAuth認(rèn)證彈框問題怎么處理

服務(wù)器會(huì)返回401,告知客戶端這個(gè)資源需要使用基本認(rèn)證的方式訪問。

我們可以看到在

www-Authenticate

這個(gè)Header里面 有兩個(gè)值,

Basic:說明需要基本認(rèn)證,

realm:說明客戶端需要輸入這個(gè)安全區(qū)的用戶名和密碼,而不是其他區(qū)的。

3、客戶端:服務(wù)器,我已經(jīng)按照你的要求,攜帶了相應(yīng)的用戶名和密碼信息了,你看一下。 如果客戶端是瀏覽器,那么此時(shí)就會(huì)彈出一個(gè)彈窗,讓用戶輸入用戶名和密碼。

selenium中BasicAuth認(rèn)證彈框問題怎么處理

Basic 內(nèi)容為: 用戶名:密碼 的base64形式 。

例如我的用戶名為Shusheng007,密碼為ss007。那么我的Basic的內(nèi)容為 Shusheng007:ss007 對(duì)應(yīng)的base64 編碼內(nèi)容U2h2c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示

GET /logo.jpg  HTTP/1.1 
Authorization: Basic U2h2c2hlbmcwMDcldUZGMUFzczAwNw==

selenium中BasicAuth認(rèn)證彈框問題怎么處理

4、服務(wù)器:客戶端你好,我已經(jīng)校驗(yàn)了你的用戶名和密碼,是正確的,這是你要的資源。

HTTP/1.1 200 OK Content-type: image/jpg ...

至此這個(gè)HTTP事務(wù)就結(jié)束了,非常簡(jiǎn)單的一個(gè)認(rèn)證機(jī)制。

二、selenium處理思路

因?yàn)榉浅O駨棾隹?,首先我們想到的思路是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()

但是代碼會(huì)報(bào)錯(cuò),提示找不到alert警告框

selenium中BasicAuth認(rèn)證彈框問題怎么處理

接下來考慮是不是UI自動(dòng)化的詬病,要加延遲,安排!

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()

問題依舊~

接下來思考,當(dāng)前這個(gè)彈框出現(xiàn)后是不能夠元素定位的,確定不是HTML,是瀏覽器的彈框。

接下來就想入非非了,Keys?pyautogui?最后想到HTTP協(xié)議是可以攜帶賬號(hào)和密碼的,但是通常不會(huì)這么做。

格式為:http://username:password@host:port/path/query parameter

代碼試驗(yàn)如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://username:password@ip:port/admin.php")

input("...")
driver.quit()

的確跳過授權(quán)框,進(jìn)入到網(wǎng)頁登錄頁面。

selenium中BasicAuth認(rèn)證彈框問題怎么處理

讀到這里,這篇“selenium中BasicAuth認(rèn)證彈框問題怎么處理”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI