2014-12-05 11 views
5

Sto avendo un problema con un URL sicuro:Handling finestra di avviso "Authentication Required" con Python 2.7 + Selenio WebDriver

apertura del URL crea una finestra di avviso "Authentication Required" con campi username e password.

Sono abbastanza nuovo per Selenium Webdriver e Python. Non ho familiarità con la gestione degli avvisi e sto attualmente inserendo manualmente le credenziali finché non riesco a capire. Ho già provato ad aggiungere il mio nome utente/password all'URL. Questo non funziona per me.

Qualcuno potrebbe indicarmi la direzione di inserimento delle chiavi nei campi nome utente e password in una casella di avviso?

+1

È possibile fornire uno screenshot dell'avviso? – Saifur

+0

Scopri dai tuoi sviluppatori quale forma di autenticazione sta utilizzando. Passando il nome utente: la password nell'URL * dovrebbe * funzionare per la maggior parte dei casi, a meno che tu non abbia sbagliato la sintassi. – SiKing

risposta

1

Grazie per tutte le risposte. Sfortunatamente, nessuna di queste soluzioni ha funzionato per me. Sospetto che possa avere qualcosa a che fare con la creazione di un nuovo profilo ogni volta che Firefox viene aperto da un webdriver.

mia soluzione: ho cambiato il conducente da Firefox a IE, dopo l'installazione del driver di IE a 32 bit (http://selenium-release.storage.googleapis.com/index.html?path=2.44/). Questo ha risolto il mio problema non creando più la casella di avviso e permettendomi di continuare con il mio unittest.

+0

La mia password ha un segno @ in modo che anche questa fosse la mia soluzione. Per non parlare del fatto che http ottiene con una password in chiaro può essere annusata – gh4x

1

Si può provare a utilizzare Keys nella scheda all'interno della segnalazione?

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

La riga: 'driver.get (' http://www.url.com/ ')' bloccherà efficacemente, questo metodo non funzionerà. – PythonTester

+1

utilizzando una stringa concatenata corregge il problema da parte mia: 'alert.send_keys ('username' + Keys.TAB + 'password')' –

5

In caso di tale autenticazione, è necessario passare il nome utente e la password al server durante l'accesso pagina per evitare finestra di autenticazione (che è fuori della portata di selenio)

Supponiamo l'url si sta cercando di accesso è: http://example.com

dovrete accedere a questo URL con le credenziali come segue:

driver.get('http://username:[email protected]') 

dove username è il tuo nome utente e password è la tua password per il sito.

+0

L'ho provato con il driver Chrome e la pagina non è stata caricata. – zabumba

+1

Funzionerebbe, ma hai dimenticato la s dopo l'http – Ekkstein

0

Avevo gli stessi identici problemi di te fino a quando non ho notato, che ho semplicemente dimenticato di scrivere: 'https' invece di solo http. Se aggiungi le "s", per me lo ha fatto!

Così nel codice forse si vuole provare:

driver.get('https://username:[email protected]') 
0

stavo avendo problemi simili in cui aggiungendo il mio username/password nell'URL non ha funzionato per me. Questo perché Firefox mi stava avvisando con una casella di conferma che mi chiedeva di confermare che volevo accedere al sito con lo username fornito. Di seguito è stato risolto questo problema:

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('https://<username>:<password>@<site-needing-auth>.com') 
alert = driver.switch_to_alert() 
alert.accept() 
Problemi correlati