[英]Selenium + Python - Handling Authentication Dialog without URL username and password params
我需要在不提供URL參數的情況下進行身份驗證。 這意味着,我必須手動處理警報(這意味着切換到警報,進行身份驗證,切換回上一個窗口),並使用Selenium Alert Class提供的authenticate方法。
這是我用來處理警報的功能:
def login_browser_alert(driver):
WebDriverWait(driver, 3).until(EC.alert_is_present())
current_window = driver.window_handles[0]
driver.switch_to.alert.authenticate('admin', 'admin')
driver.switch_to.window(current_window)
這是我導航到頁面的方式:
def goto_page(self):
self.driver.get(self.URL)
login_browser_alert(self.driver)
我使用http://the-internet.herokuapp.com/basic_auth作為虛擬身份驗證示例。 憑據是用戶:“ admin”密碼:“ admin”
問題:
什么都沒發生。 對話框僅保留在那里,並且不會在任何字段中發送輸入。 什么都不會被點擊。 它只是掛在那里。
我發現的所有解決方案都只是像這樣在URL中傳遞參數:
由於某些原因,我不能針對我當前正在從事的項目。 所以,不,這不會解決我的問題...
有人遇到過類似的問題嗎? 您如何解決此問題?
編輯:
在此鏈接中,您可以找到有關此問題的更多信息。
https://github.com/SeleniumHQ/selenium/issues/5471#issuecomment-364457555
Alert類中的身份驗證方法只是實驗性的。 似乎唯一的方法確實是使用URL參數。
Alert#authenticate()
可能什么也不做。 它已從Ruby和Java綁定中刪除,並且在Python綁定中沒有針對它的測試。
正如您在其他地方看到的那樣,唯一的選擇是在用戶請求的URL中包含用戶名和密碼作為username:password@host
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.