Selenium處理授權框,登錄框,握手框


在Web自動化中,常常遇到三種彈框:

  1. JavaScript警告框,如alert,confirm,prompt等,如下圖:
    處理方法為driver.switch_to.alert().dismiss()或river.switch_to.alert().accept()

Alert彈框
Alert彈框

Confirm彈框
Confirm彈框

Prompt彈框
Prompt彈框

  1. DOM彈框,或者叫div彈框,這種彈框本身就在html代碼中,只是原來隱藏了,觸發時會以對話框形式顯示出來,如下圖:
    處理方法為,按正常操作,觸發顯示(建議sleep(.5)),然后直接定位操作上面的元素即可。也可使用js跳過流程,直接使對話框顯示,然后定位操作。
    DOM彈框

  2. 彈出小窗口,這種小窗口實際上是個網頁窗口,無須處理(driver還在原頁面),或使用switch_to.window()切換到新窗口,使用driver.close()關閉即可。

第4種彈框你見過嗎?
訪問:http://115.28.108.130:5000/api/user/login2/,如下圖:

授權彈框

這種,彈框即不在html中,也不在js中,也不是新窗口,這種該怎么處理呢?
這種屬於Basic Auth的授權彈框,在加載頁面前進行用戶名密碼驗證后才能訪問。
如果你了解URL的組成,會發現,其實解決方法非常簡單。
URL的組成:

協議://用戶名:密碼@服務域名或IP:端口號/接口地址?查詢參數

這種Basic Auth的授權頁面只需要把用戶名密碼放到URL中即可:
示例代碼:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://admin:secret@115.28.108.130:5000/api/user/login2/')

sleep(3)
driver.quit()

效果下圖所示,以完成授權:
登錄彈框


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM