我有一個安全的URL的問題盒:處理「需要驗證」警報與Python 2.7 +硒的webdriver
打開URL創建包含用戶名和密碼字段的「需要驗證」的警告框。
我是Selenium Webdriver和Python的新手。我不熟悉處理警報,我目前手動輸入憑據,直到我能弄明白爲止。 我已經嘗試將我的用戶名/密碼添加到URL中。這對我不起作用。
可能有人請指出我在alertbox進入鍵進入用戶名和密碼字段的方向是什麼?
我有一個安全的URL的問題盒:處理「需要驗證」警報與Python 2.7 +硒的webdriver
打開URL創建包含用戶名和密碼字段的「需要驗證」的警告框。
我是Selenium Webdriver和Python的新手。我不熟悉處理警報,我目前手動輸入憑據,直到我能弄明白爲止。 我已經嘗試將我的用戶名/密碼添加到URL中。這對我不起作用。
可能有人請指出我在alertbox進入鍵進入用戶名和密碼字段的方向是什麼?
感謝所有的回覆。不幸的是,這些解決方案都不適合我。我懷疑這可能與每次由webdriver打開Firefox時創建新配置文件有關。
我的解決方法: 我改變了司機從火狐IE瀏覽器,安裝32位IE的驅動程序(http://selenium-release.storage.googleapis.com/index.html?path=2.44/)之後。這解決了我的問題,不再創建alertbox,並讓我繼續我的單元測試。
之後的密碼。我的密碼有一個@符號,所以這也是我的解決方案。更不用說,用純文本密碼獲取http可能會被嗅探到 – gh4x 2017-01-25 19:31:55
您可以嘗試在報警中使用Keys選項卡嗎?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get('http://www.url.com/')
wait(driver, 5).until(EC.alert_is_present())
alert = driver.switch_to_alert()
alert.send_keys('username')
alert.send_keys(Keys.TAB)
alert.send_keys('password')
alert.accept()
該行: 'driver.get('http://www.url.com/')' 將會有效阻止,此方法將無法工作。 – PythonTester 2015-03-11 12:02:30
使用串聯字符串修復了我的問題:'alert.send_keys('username'+ Keys.TAB +'password')' – 2017-07-18 10:23:52
在這樣的認證的情況下,需要通過用戶名和密碼,服務器在訪問網頁,以避免驗證窗口(這是出於硒夠不到的地方)
假設你正在嘗試訪問的網址是:http://example.com
你有憑據訪問此網址類似如下:
driver.get('http://username:[email protected]')
其中username
是您的用戶名,password
是您網站的密碼。
我有完全相同的問題,因爲你,直到我發現,我只是忘了寫:「HTTPS」,而不僅僅是HTTP。如果你添加's',對我來說就是這樣!
所以在代碼也許你也想嘗試:
driver.get('https://username:[email protected]')
我在這裏添加我的用戶名/密碼,進入網址爲我沒有工作,類似的問題。這是因爲Firefox提醒我一個確認框,要求我確認我想用提供的用戶名登錄該網站。下面解決了這個問題:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://<username>:<password>@<site-needing-auth>.com')
alert = driver.switch_to_alert()
alert.accept()
你能提供一個警報截圖嗎? – Saifur 2014-12-05 19:43:33
從你的開發人員那裏找出它使用的是什麼形式的認證。在URL *中傳遞用戶名:密碼*應該適用於大多數情況,除非語法錯誤。 – SiKing 2014-12-05 21:25:13